2010-02-23 14 views
5

में फ़ाइलों (पूर्ण पथ) के माध्यम से लूप कैसे करें PowerShell में समतुल्य कैसे करें? ध्यान दें कि मुझे प्रत्येक फ़ाइल के लिए पूर्ण पथ की आवश्यकता है।PowerShell

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

मैंने थोड़ी देर के लिए गेट-चाइल्ड इटैम के साथ खेला और मुझे यकीन है कि उत्तर कुछ जगह है।

+0

आपको अपनी खोजों को उत्तर में ले जाना चाहिए ताकि उन्हें – JaredPar

+0

ऊपर उठाया जा सके सुझाव के लिए धन्यवाद। –

उत्तर

6

मुझे यकीन है कि क्या mtime यहाँ किसी और

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

mtime - फ़ाइल डेटा अंतिम बार 24 घंटे पहले संशोधित किया गया था। –

+1

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

+0

कोई टिप्पणी नहीं कि यहां कोई टिप्पणी कैसे प्रारूपित करें ताकि मैं कोड और आउटपुट पेस्ट नहीं कर सकूं। लेकिन मुझे त्रुटि मिलती है "मूव-आइटम: पैरामीटर 'पथ' पर तर्क बाध्य नहीं कर सकता क्योंकि यह शून्य है।" जब मैं मूल उत्तर आज़माता हूं। मैं PowerShell 1 का उपयोग कर रहा हूं, शायद यह एक मुद्दा है? –

2

यह मैं मैं क्या जरूरत के करीब पाने के लिए लगता है सब कुछ करने कोड है करता नहीं हूँ। मैं इसे समझने के लिए 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 } 
    } 
+0

आपके द्वारा पोस्ट किया गया कोड क्या करता है? –