我的需要是将“主”文件夹的所有文件和文件夹复制到安装的所有 USB 密钥中。
所以,我写了这段代码:
for usb_key in `ls /media/`;
do
for file in `ls -a /home/daniele/USB/MASTER`;
do
cp /home/daniele/USB/MASTER/"$file" /media/$usb_key/"$file"
done;
done;
for usb_key in `ls /media`;
do
umount /media/$usb_key
done;
#alert me that the work is done
totem /home/daniele/USB/0016.mp3 &
exit
但是,如果我有一个名为“DO NOT DELETE”的文件夹/home/daniele/USB/MASTER
,这会因为文件名而引发错误。
那么,我该如何解决呢?有一种方法可以将$file
var中的所有空格替换为\
?
那这个呢?我不知道为什么你必须迭代每个文件以及为什么你不能只复制很多......但这应该比解析
ls
's 的输出稍微好一点。只是为了解释发生了什么,解析外部输入时所有空格的中断(就像你的代码一样)。您可以通过转到包含间隔文件的目录并运行来查看该操作:
在我的 TV 目录中,我看到如下输出:
我认为有一种方法可以更改中断序列,但使用 bash 的本机文件查找语法更容易。或者使用
find ... -exec ...
本身非常强大的。