Shell 脚本将特定文件从一个文件夹复制到另一个文件夹并附带日期

Shell 脚本将特定文件从一个文件夹复制到另一个文件夹并附带日期

我想编写一个脚本,用于在特定文件夹中查找特定文件。文件名和位置将在脚本中预先定义。将运行一个循环,如果文件存在,它将该文件复制到另一个带有日期的位置(此位置也将被定义),如果文件不存在,它将弹出“文件不存在”的提示。我曾尝试过:

srcdir="/home/bmsc/HOME/oam/data"
dstdir="/home/bmsc/backup"
source=/home/bmsc/HOME/data/haguard.xml
destination=/home/bmsc/backup/
d=$(date +%m%d%y)

for srcfile in ${srcdir}/*
do
    dstfile=$(basename $srcfile)
    dstfile=${dstfile/\./${d}\.}
    cp "$source" "$dstdir/$dstfile"
done

但是它复制了 srcdir 中的所有文件。请问有人能帮我吗?

答案1

如果你正在寻找特定的文件,为什么要运行循环?你可以直接测试该文件是否存在:

if [[ -f $source ]]
then
    dstfile=$(basename "$source")
    ...
fi

答案2

srcdir="/home/bmsc/HOME/oam/data"
dstdir="/home/bmsc/backup"
source=/home/bmsc/HOME/data/haguard.xml
destination=/home/bmsc/backup/
d=$(date +%m%d%y)

if [ -f $source]; then
      dstfile=$(basename $source)
      dstfile=${dstfile/\./${d}\.}
      cp "$source" "$dstdir/$dstfile"
fi

相关内容