如何在PowerShell中执行相同的操作?请注意,我需要每个文件的完整路径。
# ksh
for f in $(find /app/foo -type f -name "*.txt" -mtime +7); do
mv ${f} ${f}.old
done
我尝试使用 Get-ChildItem 进行了一些操作,我确信答案就在那里。
如何在PowerShell中执行相同的操作?请注意,我需要每个文件的完整路径。
# ksh
for f in $(find /app/foo -type f -name "*.txt" -mtime +7); do
mv ${f} ${f}.old
done
我尝试使用 Get-ChildItem 进行了一些操作,我确信答案就在那里。
我不确定mtime在这里的作用是什么,这里是完成其他所有操作的代码:
gci -re -in *.txt "some\path\to\search" |
?{ -not $_.PSIsContainer } |
%{ mv $_.FullName "$($_.FullName).old" }
?{ $_.LastWriteTime -le (Get-Date).AddDays(-8) }
- ephemient$_.FullName
作为 Move-Item
的第一个参数,它也可以从 $_
中推断出来。 - JoeyMove-Item
命令的 -destination
参数可以通过管道接收输入,所以你可以这样做:... | Move-Item -Dest {$_.FullName + '.old'}
。 - Keith Hill这似乎离我所需要的很近。我能够将Jared的答案中的一些信息与这个问题相结合,以找出解决方案。
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 }
}