我需要一个目录中的文件移动到另一个directory.I得到的统计错误,当我用下面的程序。
for i in dir1/*.txt_dir; do
mv $i/*.txt dir2/`basename $i`.txt
done
错误信息
mv: cannot stat `dir1/aa7.txt_dir/*.txt': No such file or directory
我需要一个目录中的文件移动到另一个directory.I得到的统计错误,当我用下面的程序。
for i in dir1/*.txt_dir; do
mv $i/*.txt dir2/`basename $i`.txt
done
错误信息
mv: cannot stat `dir1/aa7.txt_dir/*.txt': No such file or directory
正常情况下,这不符合任何一个文件名水珠扩大,它仍然保持不变。 因此,你会得到这样的结果:
$ RM .bak的RM:无法删除`.bak的“:没有这样的文件或目录
为了避免这种情况,我们需要改变变了nullglob的默认值。
#BASH
shopt -s nullglob
for i in dir1/*.txt_dir; do
mv $i/*.txt dir2/'basename $i'.txt
done
了解更多关于在这里: http://mywiki.wooledge.org/NullGlob
希望这可以帮助!
mv $i/*.txt dir2/`basename $i`.txt
当有任何文本文件这不起作用$i/
。 外壳经过原始字符串"$i/*.txt"
到mv
与未展开*
在里面,其中mv
扼流圈。
尝试是这样的:
for i in dir1/*.txt_dir; do
find $i -name '*.txt' -exec mv {} dir2/`basename $i`.txt \;
done
虽然它不是在您的例子所示 - 使用正确的报价是非常重要的。 在BASH“*”的计算结果为*和“*”的计算结果为膨胀水珠。 所以
`ls *`
将显示所有文件和目录
`ls "*"`
会显示命名字面的所有文件*