名称不包含特定字符串的文件的递归列表

名称不包含特定字符串的文件的递归列表

我有:一个具有许多嵌套子目录和文件的目录。

我想要:名称不包含特定字符串的所有文件的列表。

示例文件结构:

foo/
foo/bar/foobar.txt
foo/foo/foobartest.txt
foo/foobartest.txt

如果我使用字符串“test”输入查询,它应该只返回/foo/bar/foobar.txt

我想有人会使用find一些正则表达式吗?

非常感谢你的帮助!

答案1

取决于您想要的输出。

ls -R | grep -v test

或者

find foo -type f | grep -v test

您可以使用 perl 或 awk 等工具格式化输出

答案2

如果你想获得

所有文件的列表谁的名字不包含特定字符串

你必须采取这样的做法:

find foo/ -type f -exec bash -c "basename {} | grep -v 'test' > /dev/null && echo {}" \; 这将仅按文件名匹配,但输出相对路径,就像 find 通常所做的那样。
有人能提出更优雅的解决方案吗?

如果与相对路径匹配没问题,那么你可以使用以下答案:@bodhi.zazen

find foo -type f | grep -v test

相关内容