我的项目根目录上有一个 bash 文件,包含这一行
$ ls | grep -P '^some_pattern_matching_regex_goeshere.txt$' | xargs rm -f
Run Code Online (Sandbox Code Playgroud)
上面一行删除所有.txt
从项目根目录的文件,但是当我把所有的.txt文件到另一个文件夹如process_logs /并尝试用相同的命令ls
,grep
而rm
它不起作用。
这是我尝试但未删除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
从目录中删除文件,但它不起作用。
尝试使用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 文章。