我需要打印目录及其子目录中存在的所有文件的“完整”相对路径列表。我曾经用 du 和 grep 这样做:
du -a <path_to_directory> | grep -Po '[0-9]+\t\/\K.*'
但是如果路径太长,du 会用点替换部分路径。
哪个是好的选择?
解析 ls 不是一个选项。
我需要打印目录及其子目录中存在的所有文件的“完整”相对路径列表。我曾经用 du 和 grep 这样做:
du -a <path_to_directory> | grep -Po '[0-9]+\t\/\K.*'
但是如果路径太长,du 会用点替换部分路径。
哪个是好的选择?
解析 ls 不是一个选项。
最直接的选择是
find
:它有各种过滤测试,例如:
-type
根据类型(常规文件f
、目录d
等)进行过滤-mindepth
并-maxdepth
设置find
应该搜索的深度(不是真正的测试)-name
并-path
根据文件名和路径进行过滤,支持通配符。它提供多种输出格式,使用
-printf
选项。根据 shell 和启用的选项,您还可以为此目的使用 globbing。例如,在
bash
:并在
zsh
: