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

标签 bash gnu-parallel

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

我知道我可以使用parallel --halt now,fail=1在命令失败时停止并行,但这不是我想要的。

查找 . -maxdepth 1 -type f -iname“*.wav”|并行 -j+0 ffmpeg -threads 0 -hide_banner -loglevel error -i {} -movflags use_metadata_tags -c:a libmp3lame -q:a 2 ./converted/{.}.mp3 && rm {}

谢谢

我尝试使用 && rm {} 作为并行进程的一部分,但文件并未被删除。

最佳答案

一个潜在的解决方案是:

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 {}'

(确保引用命令)

关于bash - 如何仅在并行处理成功时才运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77817446/

相关文章:

node.js - 如何将 stdout/stderr 发送到祖 parent 进程?

bash - Shell 脚本中的多任务菜单

bash - 在不使用bash -c的docker run中使用容器环境变量

linux - 如何使用sudo获取运行命令的pid

gnu-parallel - 为什么在教程中使用 GNU Parallel --jobs 4 选项运行 5 个作业?

parallel-processing - 在gnu并行中如何指定结果文件/目录的名称?

bash - 如何在 github 操作中使用计算属性

linux - "find"和 "ls"与 GNU 并行

linux - 仅当用户定义的条件为真时才使用 GNU Parallel 运行下一个作业

bash - 如何使用 GNU parallel 并行运行 curl 命令