我使用 VLC 从多个文件夹中转换/压缩了几个 MP4 文件。 例如,转换/压缩文件的名称以 -convert 结尾。2. bubble sort-converted.mp4
.
进入每个文件夹并删除所有原始文件并保留转换后的文件真的很麻烦。
使用一些 zsh/bash 命令,我想递归删除所有原始文件并保留转换后的文件。 例如,我将删除3 - sorting/2. bubble sort.mp4
并将保留3 - sorting/2. bubble sort-converted.mp4
.
TLDR; 简而言之,删除所有扩展名为.mp4
的文件,其中文件名不会以-converted
结尾,使用某些 zsh/bash 命令。
此外,如果在删除原始文件后有某种方法可以将转换后的文件重命名为原始名称,那将是一个加号。
谢谢!
find
可以与逻辑表达式一起使用,以匹配所需的文件并将其删除。
在您的情况下,可以使用以下内容来验证它是否与要删除的文件匹配。它查找名称中没有converted
但以.mp4
结尾的所有文件。
find . -type f -not ( -name '*converted*' ) -a -name "*.mp4"
一旦您对文件列表结果感到满意,然后添加-delete
以执行实际删除。
find . -type f -not ( -name '*converted*' ) -a -name "*.mp4" -delete
试一试:
find . -name '*.mp4' | grep -v 'converted' | xargs rm -f
zsh 纯解决方案:
rm -f ^(*.mp4-converted)(.)
^ ................. negates
*-converted ....... pattern
(.) ............... regular files
使用 gnu 并行(在多个文件的情况下(
parallel --no-notice rm -rf ::: ^(*converted)(.)
即使您的文件名包含 '、' 或空格,这也将起作用:
find . -name '*.mp4' |
grep -v 'converted' |
parallel -X rm -f