将文件移动到不同的目录

将文件移动到不同的目录

我正在尝试将指定目录中的媒体和其他文件移动到另一个目录,如果该目录不存在,则会创建该目录。并且,我正在尝试创建一个目录,其余具有不同扩展名的文件将存放在该目录中。我的第一个问题是我的脚本没有创建新目录,也没有将文件移动到其他目录。我如何将具有不同扩展名的文件移动到一个目录?

这是我目前所得到的。请纠正我的错误并帮助修改我的脚本:

#!/bin/bash
From=/home/katy/doc
To=/home/katy/mo #directory where the media files will go
WA=/home/katy/do # directory where the other files will go
 if [ ! -d "$To" ]; then
   mkdir -p "$To"
 fi
cd $From
find . -type f -name"*.mp4" -exec mv {} $To \;

答案1

尝试这个:

#!/bin/bash
# Call this script with the extensions you want to move.
# E.g.,     ./script mp4 avi flv
From="/home/katy/doc"
To="/home/katy/mo" #directory where the media files will go
WA="/home/katy/do" # directory where the other files will go
 if [[ ! -d "$To" ]]; then
   mkdir -p "$To"
 fi
cd "$From"
for i in "$@"; do # You could also hard code this: for i in mp3 mp4 avi; do
  find . -type f -name "*.${i}" -exec mv "{}" "$To" \;
done

{ 和 } 是特殊字符。我认为在脚本中添加一些引号将有助于使其更清晰并且工作得更好。

相关内容