我正在尝试将指定目录中的媒体和其他文件移动到另一个目录,如果该目录不存在,则会创建该目录。并且,我正在尝试创建一个目录,其余具有不同扩展名的文件将存放在该目录中。我的第一个问题是我的脚本没有创建新目录,也没有将文件移动到其他目录。我如何将具有不同扩展名的文件移动到一个目录?
这是我目前所得到的。请纠正我的错误并帮助修改我的脚本:
#!/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
{ 和 } 是特殊字符。我认为在脚本中添加一些引号将有助于使其更清晰并且工作得更好。