使用 ls grep 和 rm 删除目录中的文件

Alw*_*nny 5 ls grep rm

我的项目根目录上有一个 bash 文件,包含这一行

$ ls | grep -P '^some_pattern_matching_regex_goeshere.txt$' | xargs rm -f
Run Code Online (Sandbox Code Playgroud)

上面一行删除所有.txt从项目根目录的文件,但是当我把所有的.txt文件到另一个文件夹如process_logs /并尝试用相同的命令lsgreprm它不起作用。

这是我尝试但未删除process_logs目录中的文件的方法。

 $ ls process_logs/ | grep -P '^some_pattern_matching_regex_goeshere.txt$' | xargs rm -f
Run Code Online (Sandbox Code Playgroud)

注意:我也尝试过使用简单的正则表达式模式的命令,比如 ls process_logs/ | grep -P '^*.txt$' | xargs rm -f从目录中删除文件,但它不起作用。

jor*_*anm 5

尝试使用find替代。如果您不想find递归,可以使用深度选项:

find /process_logs -maxdepth 1 -mindepth 1 -type f -name 'some_shell_glob_pattern_here' -delete
Run Code Online (Sandbox Code Playgroud)

ls不建议解析 的输出,因为它ls并不总是准确的ls,因为打印的文件名的人类可读版本可能与实际文件名不匹配。有关更多信息,请参阅解析 ls wiki 文章。