我正在使用以下命令删除文件夹中的文件。但我的命令是删除所有内容。
ionice -c 3 find . -type f -print -delete
如果有后缀,我不想删除文件_y
。
所以,我的文件夹视图:
123a.jpg -> Should delete
4567.jpg -> Should delete
7644_y.png -> Should not delete
12234_y.jpeg -> Should not delete
5753.jpg -> Should delete
我的命令应该如何实现这一目标?
答案1
根据您的示例,您想要排除名称包含_y
子串。
find . -type f ! -name '*_y*' -print -delete
(ionice -c 3
如果您愿意,可以在前面使用,这与您对 所做的操作无关find
。)
如果您只想保留位于_y
基本名称末尾的文件(因此12234_y_.jpeg
将被删除),您可以使用
find . -type f ! -name '*_y.*' -print -delete
答案2
如果您find
专门使用递归子目录,则此答案不适用。但是,如果您只删除当前目录中的文件,则 bash 特定的选项是:
shopt -s extglob
rm -v !(*_y.*)
这具有尝试删除与模式匹配的非文件(目录)的额外限制。