我试图列出一个由变量 DIR
. 到目前为止,我的代码是这样的。
for i in `find $DIR -name "*.txt"
变量 DIR
已经被定义了。我不知道这里的语法是什么。
ls "${DIR}/*.txt"
或者
find "${DIR}" -name "*.txt"
应该可以做到这一点。第一条只列出了 *.txt
目录本身的文件,第二个也是 *.txt
子目录下的文件。
我想你是想对所有在 $DIR
或其子目录。和往常一样,有不同的解决方案。
这个
$ 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
或this:
$ find "$DIR" -type f -name \*.txt -print0 | xargs -0 -I {} echo "Do something with {}"
或者this:
$ find "$DIR" -type f -name \*.txt -exec echo "Do something with {}" \;
或者... 100个额外的解决方案。
不知道你想要什么。
find $DIR -name "*.txt" -print
将列出所有以 .txt
和位于 $DIR
或其子目录。您可以省略 -print
因为这是默认的行为。
如果你想对这个文件做一件简单的事情,你可以使用 find
's -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
或文件名包含空格。
干杯