2010-02-23 26 views
5

¿Cómo hago el equivalente en PowerShell? Tenga en cuenta que necesito la ruta completa a cada archivo.Cómo recorrer archivos (ruta completa) en PowerShell

# ksh 
for f in $(find /app/foo -type f -name "*.txt" -mtime +7); do 
    mv ${f} ${f}.old 
done 

He jugado un poco con Get-ChildItem para un poco y estoy seguro de que la respuesta es que hay algún lugar.

+0

Debe mover sus descubrimientos en las respuestas para que puedan ser votados – JaredPar

+0

Gracias por la sugerencia, va a hacer. –

Respuesta

6

no estoy seguro de lo que -mtime hace aquí es el código para hacer todo lo demás

gci -re -in *.txt "some\path\to\search" | 
    ?{ -not $_.PSIsContainer } | 
    %{ mv $_.FullName "$($_.FullName).old" } 
+0

mtime - Los datos del archivo se modificaron por última vez n * hace 24 horas. –

+1

'? {$ _. LastWriteTime -le (Get-Date) .AddDays (-8)}' – ephemient

+0

No estoy seguro de cómo formatear un comentario aquí, así que no puedo pegar el código y la salida. Pero me aparece el error "Move-Item: no se puede enlazar el argumento con el parámetro 'Path' porque es nulo". cuando intento la respuesta original. Estoy usando PowerShell 1, ¿quizás eso es un problema? –

2

Esto parece conseguirme cerca de lo que necesito. Pude combinar parte de la información de la respuesta de Jared con this question para averiguarlo.

foreach($f in $(gci -re -in hoot.txt "C:\temp")) { 
    mv $f.FullName "$($f.FullName).old" 
} 

Con el interés de compartir la riqueza aquí está mi función para simular * nix find.

function unix-find (
    $path, 
    $name="*.*", 
    $mtime=0) 
    { 
    gci -recurse -include "$name" "$path" | 
     where-object { -not $_.PSIsContainer -and ($_.LastWriteTime -le (Get-Date).AddDays(-$mtime)) } | 
     foreach { $_.FullName } 
    } 
+0

¿Qué hace el código que publicaste? –

Cuestiones relacionadas