递归'ls'给出绝对文件名

thi*_*ias 4 ls shell recursive

当我在目录中执行 'ls -R' 时,我得到类似

./dir1
dir2 file1.txt file2.txt

./dir1/dir2
file3.txt file4.txt
Run Code Online (Sandbox Code Playgroud)

但我想要一个能给我的命令

./dir1/file1.txt
./dir1/file2.txt
./dir1/dir2/file3.txt
./dir1/dir2/file4.txt
Run Code Online (Sandbox Code Playgroud)

这样我就可以在 for 循环中使用它来处理所有文件。

Con*_*lls 9

你要find(1) 这将完全符合您的要求。您还可以指定各种过滤条件,例如文件类型(不包括目录)、比给定文件上的时间戳更新等。手册页将更详细地描述这些。

另外,看看这个-exec选项;您可以使用它而不是迭代输出。

  • @thias 我会将 Concerned 的建议修改为强烈建议:使用 `find ... -exec`。不要在 $(find ...) 中使用 `for x`:它不起作用,因为它无法处理包含空格的文件名。`find -exec` 正是这项工作的正确工具。 (3认同)
  • @thias 也看看`find -ls` 选项。 (2认同)