我試圖列出變量DIR
給出的目錄中的文件。我的代碼看起來像這樣至今:「查找」命令與可變目錄
for i in `find $DIR -name "*.txt"
變量DIR
已定義。我不確定這裏的語法是什麼。
我試圖列出變量DIR
給出的目錄中的文件。我的代碼看起來像這樣至今:「查找」命令與可變目錄
for i in `find $DIR -name "*.txt"
變量DIR
已定義。我不確定這裏的語法是什麼。
ls "${DIR}/*.txt"
或
find "${DIR}" -name "*.txt"
應該做的伎倆。第一個只在目錄本身列出*.txt
文件,第二個也在子目錄中有*.txt
個文件。
當它,我想我給了一個全面的答案,並忘記了'ls $ {DIR}/*。txt' ... – chw21
不知道你想要什麼。
find $DIR -name "*.txt" -print
將列出所有以.txt
結束,位於$DIR
或它的子目錄中的文件。無論如何,您可以省略-print
,因爲這是默認行爲。
如果您想要使用此文件做一個簡單的事情,你可以使用find
的-exec
功能:
find $DIR -name "*.txt" -exec wc -l {} \;
或者你可以使用一個循環:
for f in `find $DIR -name "*.txt"`; do
wc -l $f
mv $f /some/other/dir/
fi
記:正如@ mauro有用地指出的那樣,如果DIR
或文件名包含空格,這將不起作用。
乾杯
我想你想$DIR
和/或它的子目錄下執行對擴展名爲「TXT」所有文件規定動作。像往常一樣有不同的解決方案。
這一個:
$ for i in $(find "$DIR" -name \*.txt) ; do echo "Do something with ${i}" ; done
將無法正常工作如果文件路徑(無論是文件本身或一個子目錄)包含空格。
但是你可以使用這個:
$ find "$DIR" -type f -name \*.txt | while read i ; do echo "Do something with ${i}" ; done
或本:
$ find "$DIR" -type f -name \*.txt -print0 | xargs -0 -I {} echo "Do something with {}"
或本:
$ find "$DIR" -type f -name \*.txt -exec echo "Do something with {}" \;
或... 100額外的解決方案。
爲什麼不'ls「$ DIR」'? – pfnuesel
我還需要包含.txt部分,因爲我只查找.txt文件。 –
你對'$ DIR'的子目錄中的文件感興趣嗎,或者只對'$ DIR'本身感興趣? –