我正在尝试将$ CurrentDile从$ CurrentDir复制到$ CurrentBackup。我遇到的问题是这个文件从父目录复制每个$ CurrentFile。 例如,
让我们说输入就是这个
CurrentDir=/home/usr/logs
CurrentFile='SystemOut_*'
CurrentDay=6
CurrentBackup=/backup
但是,此命令会将每个$ CurrentFile从/ home / usr / Serverinf复制到$ CurrentBackup ...
find . $CurrentDir . -type f -name $CurrentFile -mtime +$CurrentDay -exec cp {} $CurrentBackup \;
我不确定我做错了什么...谁能告诉我我做错了什么? 如果我不能使用这个命令,你能告诉我替代命令吗?
感谢您的帮助!
答案 0 :(得分:5)
$ CurrentDir之前和之后有额外的点。除了$ CurrentDir之外,这将使它查找实际当前目录中的文件。
此外,在任何可能包含通配符的变量周围使用双引号非常重要。
find $CurrentDir -type f -name "$CurrentFile" -mtime +$CurrentDay -exec cp {} $CurrentBackup \;
更好的是,在所有变量周围加上双引号,除非你明确需要将它扩展为多个参数:
find "$CurrentDir" -type f -name "$CurrentFile" -mtime +"$CurrentDay" -exec cp {} "$CurrentBackup" \;
答案 1 :(得分:1)
据我所知,问题是多余的点:
find . $CurrentDir . -type f -name $CurrentFile -mtime +$CurrentDay -exec cp {} $CurrentBackup \;
- -
您告诉我要在当前目录中搜索和 $CurrentDir
。摆脱点,并使用双引号来防止shell在find
看到之前扩展名称。
find "$CurrentDir" -type f -name "$CurrentFile" -mtime "+$CurrentDay" -exec cp {} "$CurrentBackup" \;
答案 2 :(得分:1)
是的,正如Vaughn Cato所指出的那样,你的问题归结为双引号,以防止bash进行文件扩展。执行以下两个命令时,请查看输出的差异:
echo $CurrentFile
echo "$CurrentFile"
通常,双引shell变量是个好主意。