用于移动文件的脚本

时间:2014-02-25 17:09:13

标签: shell

我使用脚本根据所有mp4文件的文件名创建子目录。我的文件和新创建的子目录同名,位于smae子目录中。现在我需要一个脚本将mp4文件移动到每个相应子目录的文件中。我希望这是有道理的。例如:我想将“crank(2006).mp4”移动到名为“crank(2006)”的子目录中。我有大约1200个这些文件移动到他们已经创建的子目录。请帮忙。

3 个答案:

答案 0 :(得分:1)

删除.mp4后缀使用%%.mp4变量的末尾删除子字符串$f

mkdir语句确保子目录在mv命令之前存在。

for f in *.mp4
do
    subdir="${f%%.mp4}"
    mkdir -p "$subdir"
    mv "$f" "$subdir"
done

答案 1 :(得分:0)

mmv 'smae/*.mp4' 'smae/#1/#1.mp4'

这比(noddy)脚本更安全,因为mmv将检查循环,名称冲突,移动任何文件之前移动中可能出现的问题等。

答案 2 :(得分:0)

以下代码将

  • 在当前目录中找到.mp4文件,
  • 根据所有mp4文件的文件名创建子目录,
  • 将每个文件移动到相应的子目录

    for f in *.mp4; do path=$(ls $f | rev | cut -c 5- | rev); mkdir $path; mv $f $path/. ; done
    

例如:如果“crank(2006).mp4”可用于当前目录,则名为“crank(2006)”的新子目录将被创建到当前目录和“crank(2006)”中。 mp4“文件将被移动到该子目录中。

注意:而不是“mv”你也可以使用“cp”复制文件