我正在尝试列出变量DIR
给出的目录中的文件。到目前为止,我的代码看起来像这样:
for i in `find $DIR -name "*.txt"
已定义变量DIR
。我不确定这里的语法是什么。
答案 0 :(得分:1)
ls "${DIR}/*.txt"
或
find "${DIR}" -name "*.txt"
应该做的伎俩。第一个文件仅在目录中列出*.txt
个文件,第二个文件在子目录中也列出*.txt
个文件。
答案 1 :(得分:0)
我想你想对$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个解决方案。
答案 2 :(得分:-1)
不确定你想要什么。
find $DIR -name "*.txt" -print
将列出以.txt
结尾且位于$DIR
或其子目录中的所有文件。您可以省略-print
,因为这是默认行为。
如果你想对这个文件做一件简单的事情,你可以使用find
的{{1}}函数:
-exec
或者您可以使用循环:
find $DIR -name "*.txt" -exec wc -l {} \;
注意:正如@mauro有用地指出的那样,如果for f in `find $DIR -name "*.txt"`; do
wc -l $f
mv $f /some/other/dir/
fi
或文件名包含空格,这将不起作用。
干杯