如何在PowerShell中执行等效操作?请注意,我需要每个文件的完整路径。
# ksh
for f in $(find /app/foo -type f -name "*.txt" -mtime +7); do
mv ${f} ${f}.old
done
我玩Get-ChildItem了一下,我确信答案就在某个地方。
答案 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 }
}