我有:一个具有许多嵌套子目录和文件的目录。
我想要:名称不包含特定字符串的所有文件的列表。
示例文件结构:
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