Reputation: 3050
How do I do the equivalent in PowerShell? Note that I require the full path to each file.
# ksh
for f in $(find /app/foo -type f -name "*.txt" -mtime +7); do
mv ${f} ${f}.old
done
I played around with Get-ChildItem for a bit and I am sure the answer is there someplace.
Upvotes: 5
Views: 7784
Reputation: 3050
This seems to get me close to what I need. I was able to combine some of the information from Jared's answer with this question to figure it out.
foreach($f in $(gci -re -in hoot.txt "C:\temp")) {
mv $f.FullName "$($f.FullName).old"
}
In the interest of sharing the wealth here is my function to simulate *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 }
}
Upvotes: 2
Reputation: 755587
I'm not sure what mtime does here is the code to do everything else
gci -re -in *.txt "some\path\to\search" |
?{ -not $_.PSIsContainer } |
%{ mv $_.FullName "$($_.FullName).old" }
Upvotes: 6