我尝试了以下代码
CUR_DATE=`date +%F`
mkdir "$CUR_DATE"
cd "$CUR_DATE"
mkdir '00UTC'
cd ~/home/scripts/
for f in $(find . -type f -name "*.png")
do
mv $f "~/home/scripts/${CUR_DATE}/00UTC"
done
此处,所有*.png文件不会移动到子文件夹00UTC(位于当前日期文件夹内(。任何建议都是有用的。
引号阻止bash
扩展~/
。我建议更换
mv $f "~/home/scripts/${CUR_DATE}/00UTC"
带有
mv "$f" ~/"home/scripts/${CUR_DATE}/00UTC"
或
mv "$f" "$HOME/home/scripts/${CUR_DATE}/00UTC"
尽管Cyrus指出了这个问题,但如果这是一段严重的代码,则几乎没有其他事情需要考虑:
-
代码的前五行可以用2行完成,如下所示:
CUR_DATE=`date +%F` mkdir -p "$CUR_DATE/00UTC"
-
此外,您正在从同一目录中移动png文件,因此不需要使用~/,以下也可以:
for f in $(find . -type f -name "*.png") do mv $f "$(pwd)/$CUR_DATE/00UTC" done
或
for f in $(find . -type f -name "*.png") do mv $f "$CUR_DATE/00UTC" done
-
同样,一遍又一遍地运行相同的代码会在移动已经移动的文件时产生相同的文件错误(尽管这不会很糟糕(。