运行目录中文件的脚本

运行目录中文件的脚本

我想编写一个脚本,自动执行以下步骤:每周我将大约 5-10 个视频文件复制到一个目录中,并使用 avcodec 删除每个文件的音频流。我认为这是编写我的第一个 bash 脚本的良好起点。它应该检查目录中的文件名(00001.MTS、00002.MTS,...)并为每个文件执行命令。我来自 python 和 matlab,我可以使用 for 或 while 循环编写此脚本。

我很高兴没有得到我的问题的完成的代码,而是得到了一些我可以找到必要信息的链接。

谢谢,克里斯

答案1

检查man find。这是一个灵活而强大的工具,每当您听到“目录中的多个文件”时,您都应该考虑它。无论您是想寻找它们(-print),或者在这种情况下运行命令对每一个进行(-exec):

find "$HOME"/some/videos -type f -name "*.MTS" \
    -exec av_encoder_too --remove-audio ... {} \;

笔记:

  • 末尾的分号需求使用反斜杠进行转义。
  • {}是一个文字一对括号——这就是 find 在运行命令时在找到的每个文件中进行替换的地方。
  • 行尾的第一个反斜杠只是将长命令拆分为两行。您也可以轻松地省略它,将其全部写成一行长命令行

当然,你需要提供正确的值

  • 目录"$HOME"/some/videos
  • 编码器工具及其参数av_encoder_too --remove-audio ...

完成这项工作后,作为学习的下一步,我建议探索该xargs命令——这是解决“对许多文件执行某项操作”问题的不同方法。

快乐黑客,
./ddd

相关内容