通过以下方式可以轻松地递归遍历目录中的文件:
find . -type f -exec bar {} \;
但是,上述方法不适用于更复杂的事情,在这些事情中,需要完成许多条件分支,循环等。我曾经在上面使用它:
while read line; do [...]; done < <(find . -type f)
但是,这似乎不适用于包含晦涩字符的文件:
$ touch $'a\nb'
$ find . -type f
./a?b
有没有替代方法可以很好地处理此类晦涩的字符?
通过将更
—
Patrick
read line
改为,您可以解决此问题并保留原始设计IFS= read -r line
。唯一会破坏它的字符是换行符。
@Patrick,但文件名可以包含换行符。这就是为什么
—
godlygeek 2014年
-d $'\0'
更好。
find ... -exec bash -c 'echo filename is in \$0: "$0"' {} \;
是一种更好的方法。