如何在PowerShell中循环遍历文件(完整路径)

时间:2010-02-23 22:47:27

标签: powershell

如何在PowerShell中执行等效操作?请注意,我需要每个文件的完整路径。

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

我玩Get-ChildItem了一下,我确信答案就在某个地方。

2 个答案:

答案 0 :(得分:6)

我不确定mtime在这里做的是做其他所有事情的代码

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

答案 1 :(得分:2)

这似乎让我接近我需要的东西。我能够将Jared的回答中的一些信息与this question结合起来来解决这个问题。

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 }
   }