存储ls命令的输出,该命令由名称中带有空格的文件组成

时间:2015-03-01 05:24:00

标签: linux bash filenames ls

我想将ls命令的输出存储在变量中的bash脚本中,并在循环中使用每个文件名,但是例如当我执行variable=$(ls)时,目录中的一个文件名为“Hello world” “Hello”和“world”最终成为两个单独的条目,当我尝试

for i in $variable
do
  mv $i ~
done

它显示文件“Hello”和“world”不存在的错误。 有没有办法我可以访问当前目录中的所有文件并运行一些命令,即使这些文件的名称中有空格。

2 个答案:

答案 0 :(得分:2)

跟我说:don't parse the output of ls!有关详细信息,请参阅this post on Unix.SE

更好的方法是:

for i in *
do
    mv -- "$i" ~
done

或只是

mv -- * ~

答案 1 :(得分:2)

如果必须,dirfiles=(/path/of/interest/*)

接受解析ls

输出的警告

我知道你是新手,我想帮忙。但是对我(我们?)来说,通过你提出问题的方式为你提供一个对你有很大帮助的答案并不容易。

根据我到目前为止所听到的内容,您似乎对参数扩展在shell中的工作方式有了基本的了解。以下两个链接对您有用: Matching PathnamesParameters

现在,如果您的任务是对符合特定条件的文件进行操作,那么find(1)可能会完成这项工作。