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