将具有特定后缀的文件移动到目录中

将具有特定后缀的文件移动到目录中

您好,我的 .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 \;

相关内容