gpt4 book ai didi

bash - 在具有特定扩展名的所有文件夹和子文件夹中运行命令

转载 作者:行者123 更新时间:2023-12-04 22:52:15 25 4
gpt4 key购买 nike

目前,我正在尝试在我的 linux 服务器(Ubuntu 16.04)上运行一个命令来重新编码所有 .mp4 文件。但是我在文件夹和子文件夹中有很多文件,我将浪费大量时间手动运行这些命令

这是我的脚本:

for D in ./*; do
if [ -d "$D" ]; then
cd "$D"
for i in *.mp4; do
ffmpeg -i "$i" -codec copy -acodec copy -shortest -map 0:v -map 0:m:language:eng "${i%.*}.mp4"
done
cd ..
fi
done

但是,我收到了这个错误:
Error: ENOENT: no such file or directory, stat '*.mp4'

我该如何解决这个问题?

谢谢你。

最佳答案

使用find为了这。它为您处理子目录递归。像这样:

find . -type f -name "*.mp4" -exec ffmpeg -i {} -codec copy -acodec copy -shortest -map 0:v -map 0:m:language:eng {}  \; -print
  • find将自动处理当前目录和所有子目录
  • -type f : 只搜索文件
  • `-name "*.mp4": 只有带有 mp4 扩展名的文件
  • -exec COMMAND {} \; :对所有找到的文件执行该命令。 {}将替换为每个文件的文件名。 \;结束命令。
  • -print : 将打印处理过的文件


  • 就您的代码而言,目录可能没有任何“*.mp4”文件,因此 no such file or directory, stat '*.mp4'当你点击这样的目录时出错。

    关于bash - 在具有特定扩展名的所有文件夹和子文件夹中运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56815203/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com