2010-02-23 22 views
5

Eşdeğeri PowerShell'de nasıl yapabilirim? Her dosyanın tam yolunu gerektirdiğimi unutmayın.PowerShell'de dosyalar (tam yol) döngüleri nasıl yapılır

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

Get-ChildItem ile biraz oynadım ve cevabın bir yerlerde olduğundan eminim.

+0

Bulgularınızı yanıtlara yönlendirmelisiniz, böylece – JaredPar

+0

kestirilebilirler. Öneriniz için teşekkürler. –

cevap

6

Burada

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

mtime - Dosya verileri en son 24 saat önce değiştirilmiştir. –

+1

'? {$ _. LastWriteTime -le (Get-Date) .AddDays (-8)}' – ephemient

+0

Yorumun nasıl biçimlendirileceğine emin olun, böylece kodu ve çıktıyı yapıştıramam. Ancak "Taşı-Öğesi:" 'Yol' parametresine argümanı bağlayama hatası çünkü null olduğunu anladım. " orijinal cevabı denediğimde. PowerShell 1 kullanıyorum, belki bu bir sorun mu? –

2

Bu neye ihtiyacım için beni yaklaştır görünüyor diğer her şeyi yapacak kodudur gelmez Ne mtime emin değilim. Jared'in cevabındaki bilgileri bir araya getirmek için this question ile bir araya getirdim.

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

Buradaki zenginliği paylaşmak adına, * nix bulmak için simüle etme işlevim.

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

Gönderdiğiniz kod ne yapıyor? –

İlgili konular