我想就下面的脚本提出一些帮助:
#!/bin/bash
year=$(date +%Y)
lastyear=$((year-1))
month=$(date +%m)
log="$lastyear$month"
mkdir -p "/root/temp/$lastyear"
mkdir -p "/root/temp/$lastyear/$month"
cd /root
mv -f "*$log*" "/root/temp/$lastyear/$month"
错误提示
mv: cannot stat `*201602*': No such file or directory
我的目标是将文件名中包含特定“201602”字符串的所有文件移动到特定位置。
示例日志文件为OUTXXX-201602XXX
,INXXX-201602XXX
,201602XXXX
。
这将通过crontab
实现,因为有大约500k +日志文件要传输,使用find会收到太多的参数错误T_T。
任何建议都会有所帮助!
答案 0 :(得分:0)
你必须将引号字符放在引号之外才能解释它们。
尝试改为:
mv -f *"$log"* …
shell仍会将结果匹配保留为一个单词,所以即使文件名有空格也没问题。