Как перебирать файлы (полный путь) в PowerShell - PullRequest
5 голосов
/ 24 февраля 2010

Как мне сделать эквивалент в PowerShell? Обратите внимание, что мне требуется полный путь к каждому файлу.

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

Я немного поигрался с Get-ChildItem, и я уверен, что ответ где-нибудь есть.

Ответы [ 2 ]

6 голосов
/ 24 февраля 2010

Я не уверен, что mtime делает здесь код для всего остального

gci -re -in *.txt "some\path\to\search" | 
  ?{ -not $_.PSIsContainer } |
  %{ mv $_.FullName "$($_.FullName).old" }
2 голосов
/ 24 февраля 2010

Это, кажется, приближает меня к тому, что мне нужно.Мне удалось объединить некоторую информацию из ответа Джареда с этим вопросом , чтобы выяснить это.

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

В интересах делиться богатством, вот моя функция симулировать * nixнайти.

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 }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...