如何仅在并行处理成功时才运行命令

问题描述 投票:0回答:1

我正在使用并行GNU处理数千个文件并且转换成功,完成后我无法删除处理后的文件。

我知道当命令失败时我可以使用

parallel --halt now,fail=1
来停止并行,但这不是我想要的。

find . -maxdepth 1 -type f -iname "*.wav" | parallel -j+0 ffmpeg -threads 0 -hide_banner -loglevel error -i {} -movflags use_metadata_tags -c:a libmp3lame -q:a 2 ./converted/{.}.mp3 && rm {}

谢谢

我尝试使用

&& rm {}
作为并行过程的一部分,但文件没有被删除。

bash gnu-parallel
1个回答
0
投票

一个潜在的解决方案是:

find . -maxdepth 1 -type f -iname "*.wav" |\
parallel -j+0 --halt now,fail=1 'ffmpeg -threads 0 -hide_banner -loglevel error -i {} -movflags use_metadata_tags  -c:a libmp3lame -q:a 2 ./converted/{.}.mp3; rm {}'

(确保引用命令)

© www.soinside.com 2019 - 2024. All rights reserved.