grep无匹配结果时移动文件的脚本出现mv错误,求解决方案
解决建议
1. 修复grep命令的语法错误
你的grep命令里多了一个多余的空字符串参数'',这会导致grep尝试读取一个不存在的空文件名,进而始终返回非零退出码,触发mv执行。正确的命令应该是:
grep -iq "$file" /desktop/list/varlogs.txt
修正后的完整脚本:
for file in *.sup do grep -iq "$file" /desktop/list/varlogs.txt || mv "$file" /desktop/first; done
2. 确保目标目录存在
如果/desktop/first目录不存在,mv命令会把文件重命名为first而不是移动到目录中。如果目标已经是一个文件,后续移动其他文件时就会报错。提前创建目录可以避免这个问题:
mkdir -p /desktop/first
把这行代码加到脚本的最开头即可。
3. 检查权限与文件名
- 确认你对当前目录下的
.sup文件有读写权限,对/desktop/first目录有写入权限。 - 如果错误提示中的
first是某个.sup文件的名字,检查/desktop/first目录下是否已经存在同名文件,若存在可以先删除或重命名。
内容的提问来源于stack exchange,提问作者Minarcio Cura
相关产品推荐
相关产品推荐

