所以我有一个如下所示的文件结构:
视频
ABC.AVI公司
派对2014.h264
测试.avi
XXX.MKV公司
我需要为每个扩展名创建一个目录,并将相应的文件移到那里,这样看起来
视频
视频AVI
ABC.AVI公司
测试.avi
视频-H264
派对2014.h264
视频MKV
XXX.MKV公司
到目前为止,我有这个代码:

for i in $(find video -name "*.*" -print)
    do cut -d'.' -f2 <<< "$i" | uniq -c;
done

这将返回重复的avi,因此uniq似乎不工作,如何正确删除重复?

最佳答案

这个简单的脚本可能对您有用:

#!/usr/bin/env bash

shopt -s nullglob

dir=video
for file in "$dir"/*.*; do
    out=$dir/video-${file##*.}

    [[ -d $out ]] || mkdir -- "$out" || continue
    mv -- "$file" "$out"
done

您还可以使用:in "$dir"/*.{avi,mkv,h264}指定扩展名。

关于linux - Linux:从for中删除重复的字符串并剪切,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54011790/

10-11 16:49