返回具有目录和子目录路径的特定扩展名的所有文件

返回具有目录和子目录路径的特定扩展名的所有文件

在 MAC 操作系统上使用终端时,我需要返回路径以及目录和所有子目录中的文件名,但前提是文件具有特定的文件扩展名(例如 .txt)。

我尝试过这个,但它不会按文件扩展名进行过滤:

find $PWD/* -maxdepth 20

我也尝试过这个,但它没有返回我的目录路径:

ls my-dir  |egrep '\.txt$'

答案1

如果您使用的是 Macos,那么您的 shell 可能是 zsh,那么:

print -rC1 -- $PWD/**/*.txt(N)

print raw on olumn 名称以当前工作目录或以下目录1 C结尾的非隐藏文件(任何类型,包括常规、符号链接、fifo...)的完整路径,按词法排序.txt

添加D限定符(在(...)上面的内部)以包含隐藏的限定符,.以限制为常规的仅文件,om按年龄排序:q引用文件路径中的特殊字符(如果有)...

对于2 个独立列中的这些路径的head 和ail:t

() {print -rC2 -- $@:h $@:t; } $PWD/**/*.txt(N)

我们将路径列表传递给匿名函数,该函数在olumns上打印其 @rguments 的heads 和ails 。t2 C

答案2

man find。这些是正确的方法:

find "$PWD" -type f -name '*.txt' -print

或者,如果文件名包含空格或其他“有趣”字符(按照标准,除了/和之外的任何字符NUL 0x00都是允许的):

find "$PWD" -type f -name '*.txt' -print0 | \
    xargs -0 -r stat -c "%N\n"

man xargs stat

相关内容