您好,我的 .ksh 脚本中有以下几行:
for file in $fileDirectory/*.$yesterdayDate
do
mv *.$yesterdayDate "$fileDirectory/$yesterdayDate"
done
但是,当我执行此操作时,出现以下错误:
mv: cannot stat ‘*.20200607’: No such file or directory
mv: cannot stat ‘*.20200607’: No such file or directory
mv: cannot stat ‘*.20200607’: No such file or directory
有谁知道我做错了什么?
答案1
*.20200607
当前目录中没有匹配的文件。这可能一点也不奇怪。
您围绕该变量构建了一个循环,file
但从未使用过它。
for file in "$fileDirectory"/*."$yesterdayDate"; do
mv "$file" "$fileDirectory/$yesterdayDate"
done
但为什么不只是
mv "$fileDirectory"/*."$yesterdayDate" "$fileDirectory/$yesterdayDate"
?文件太多,无法mv
通话?可能不会。
答案2
你必须使用
mv $file "$fileDirectory/$yesterdayDate"
在 for 循环内部
或者
你可以使用命令来做到这一点find
:
find $fileDirectory -name \*.$yesterdayDate -type f -exec mv {} $fileDirectory/$yesterdayDate \;