2010-07-27 138 views
2

我需要一些幫助來創建shell腳本來在文件夾中的每個文件上運行特定的命令(任何),以及遞歸地跳入子目錄。shell腳本遞歸遍歷文件

我不確定如何開始。

正確方向的一個點就足夠了。謝謝。

+0

有實際上呃這樣做的方式。最好的解決方案取決於你的目標,所以如果你願意分享它,你可能會得到更好的答案。 – mvds 2010-07-27 12:47:33

回答

7

要應用的命令(比如,echo)到當前路徑下的所有文件,使用

find . -type f -exec echo "{}" \; 

的目錄,使用-type d

+0

謝謝!這讓我得到了我需要的東西! – Kirby 2010-07-27 13:03:39

2

要遞歸列出所有文件

find . -name '*' 

而且可以說,比如你想在那麼每個文件「grep的」 -

find . -type f -name 'pattern' -print0 | xargs -0 grep 'searchtext' 
+0

'-name'*''不是你想要的。它應該是'-type f'來匹配只有文件。要執行命令,請使用-exec而不是管道。 – Borealid 2010-07-27 12:43:46

+1

grepping'/ dev/urandom'可能需要一段時間;-)我建議添加'-type f' – mvds 2010-07-27 12:45:55

+0

是的。感謝您的更正。 – Gopi 2010-07-27 12:46:46

7

你應該看find命令。

例如,更改權限的所有JPEG文件的/tmp目錄下:

find /tmp -name '*.jpg' -exec chmod 777 {} ';' 

雖然,如果有大量的文件,你可以用xargs結合起來批量起來,是這樣的:

find /tmp -name '*.jpg' | xargs chmod 777 

而且,在支持空分離findxargs實現:

find /tmp -name '*.jpg' -print0 | xargs -0 chmod 777 
2

猛砸4.0

#!/bin/bash 
shopt -s globstar 
for file in **/*.txt 
do 
    echo "do something with $file" 
done 
+0

工程就像一個魅力! – ryancheung 2013-09-09 04:14:22