我需要将目录的文件移动到另一个目录.当我使用以下程序时,我得到stat错误.
for i in dir1/*.txt_dir; do
mv $i/*.txt dir2/`basename $i`.txt
done
Run Code Online (Sandbox Code Playgroud)
错误信息
mv: cannot stat `dir1/aa7.txt_dir/*.txt': No such file or directory
Run Code Online (Sandbox Code Playgroud)
通常,当扩展与任何文件名不匹配的glob时,它将保持不变.因此,您得到这样的结果:
$ rm .bak rm:无法删除` .bak':没有这样的文件或目录
为避免这种情况,我们需要更改nullglob变量的默认值.
#BASH
shopt -s nullglob
for i in dir1/*.txt_dir; do
mv $i/*.txt dir2/'basename $i'.txt
done
Run Code Online (Sandbox Code Playgroud)
在这里阅读更多相关信息:http://mywiki.wooledge.org/NullGlob
希望这可以帮助!
mv $i/*.txt dir2/`basename $i`.txt
Run Code Online (Sandbox Code Playgroud)
当 .txt 中没有文本文件时,这不起作用$i/。shell 将原始字符串传递"$i/*.txt"给其中mv未扩展的字符串,这会导致阻塞。*mv
尝试这样的事情:
for i in dir1/*.txt_dir; do
find $i -name '*.txt' -exec mv {} dir2/`basename $i`.txt \;
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46126 次 |
| 最近记录: |