为什么剪切不匹配任何分隔符



以下操作不正常,cut没有在点处分隔,但{}在文件名中肯定包含一个点。find . -type f -exec echo ffmpeg -i {} -vcodec copy -acodec copy $(echo {} | cut -d "." -s -f 1).mp4 ;

Bash在运行命令之前执行命令替换在工作中使用单引号。要运行的命令是复杂到可以用单独的sh实例来调用它,比如

find . -type f -exec sh -c 'echo ffmpeg -i "$1" -vcodec copy -acodec copy $(echo "$1" | sed "s,^./,," | cut -d "." -s -f 1).mp4' sh {} ;

例如,如果要在其中运行命令的目录看起来是这样的:

$ tree
.
├── dir
│   └── file_something.avi
├── file_a.avi
├── file_b.avi
├── file_c.avi
└── find.sh
1 directory, 5 files

它会返回:

ffmpeg -i ./file_c.avi -vcodec copy -acodec copy file_c.mp4
ffmpeg -i ./find.sh -vcodec copy -acodec copy find.mp4
ffmpeg -i ./file_b.avi -vcodec copy -acodec copy file_b.mp4
ffmpeg -i ./file_a.avi -vcodec copy -acodec copy file_a.mp4
ffmpeg -i ./dir/file_something.avi -vcodec copy -acodec copy dir/file_something.mp4

最新更新