2017-08-04 78 views
0

我不是一個scripter,非常適合初學者。我將從超過1950個目錄的* .bat文件中刪除文本。我有刪除我需要的部分文件的正確命令,並且我可以將這些文件複製到新的輸出文件(不覆蓋舊結構)。AWK - 如何在多個目錄中更改多個文件中的內容

實施例:

bin\awk "/^:COMMANDS/,0" F1\kits\test\engine\blah.bat > F2\kits\test\engine\blah.bat 

據測試並做這項工作。

現在我想對其餘1949個目錄中的所有其他文件執行此操作。

所以理論上這是需要做什麼:

bin\awk "/^:COMMANDS/,0" F1\kits\test\engine\blah.bat > F2\kits\test\_engine\blah.bat 
bin\awk "/^:COMMANDS/,0" F1\kits\test1\engine\blah.bat > F2\kits\test1\engine\blah.bat 
bin\awk "/^:COMMANDS/,0" F1\kits\test2\engine\blah.bat > F2\kits\test2\engine\blah.bat 
bin\awk "/^:COMMANDS/,0" F1\kits\test3\engine\blah.bat > F2\kits\test3\engine\blah.bat 
bin\awk "/^:COMMANDS/,0" F1\kits\test4\engine\blah.bat > F2\kits\test4\engine\blah.bat 

不斷變化的因素是目錄(test*)。但如果能以更高效的方式完成這將是非常好的。

這是在Windows上完成的(寧願* nix ...)。我怎樣才能把這個包裝成一個很好的腳本?

+0

像你需要標記你的問題聽起來更與Windows中使用的任何shell相比awk。我在Linux中使用Bash,我會這樣:'for in in */*/*。txt;做awk'{print FILENAME,$ 1}'$ i> $ {i%/ *}/output.txt; (這不適用於你)處理子目錄子目錄中的文件。 –

+0

感謝您的推薦:-)我更新了一些更多的標籤,但作爲書面,我非常新手...... :-) – Kanutten

+0

請閱讀[在什麼情況下我可以添加「緊急」或其他類似的短語,以我的問題,爲了以獲得更快的答案?](// meta.stackoverflow.com/q/326569) - 總結是,這不是解決志願者的理想方式,並且可能適得其反。請不要將這添加到您的問題。 – halfer

回答

0

你可以嘗試這樣的:

for x in F1\kits\*; do y=$(echo $x | tr '\\' ' ' | awk '{print $3}'); echo $y; done 

要看看你得到testtest1等,如果是的話試試你的命令:

for x in F1\kits\*; do 
    y=$(echo $x | tr '\\' ' ' | awk '{print $3}') 
    bin\awk "/^:COMMANDS/,0" F1\kits\$y\engine\blah.bat > F2\kits\$y\_engine\blah.bat 
done 
+0

非常感謝您的輸入!非常感激。 – Kanutten

相關問題