Shell脚本:按当前日期创建文件夹,并将.png文件移动到该子文件夹中



我尝试了以下代码

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指出了这个问题,但如果这是一段严重的代码,则几乎没有其他事情需要考虑:

  1. 代码的前五行可以用2行完成,如下所示:

    CUR_DATE=`date +%F`
    mkdir -p "$CUR_DATE/00UTC"
    
  2. 此外,您正在从同一目录中移动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
    
  3. 同样,一遍又一遍地运行相同的代码会在移动已经移动的文件时产生相同的文件错误(尽管这不会很糟糕(。

相关内容

最新更新