Как я делаю эквивалент в PowerShell? Обратите внимание, что я требую полного пути в каждый файл.
# ksh
for f in $(find /app/foo -type f -name "*.txt" -mtime +7); do
mv ${f} ${f}.old
done
Я играл вокруг с, Добираются-ChildItem некоторое время, и я уверен, что ответ там где-нибудь.
Я не уверен, что mtime делает вот код для всего остального
gci -re -in *.txt "some\path\to\search" |
?{ -not $_.PSIsContainer } |
%{ mv $_.FullName "$($_.FullName).old" }
Похоже, это приближает меня к тому, что мне нужно. Мне удалось объединить часть информации из ответа Джареда с этим вопросом , чтобы понять это.
foreach($f in $(gci -re -in hoot.txt "C:\temp")) {
mv $f.FullName "$($f.FullName).old"
}
В интересах обмена богатством здесь моя функция - имитировать * 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 }
}