【问题标题】:Listing files with spaces in name列出名称中带有空格的文件
【发布时间】:2015-03-01 04:20:45
【问题描述】:

问题

在某个目录中,我有一些文件名中带有空格(或者某些特殊字符)的文件。

尝试每行列出一个文件,我使用了ls -1,但名称中包含空格的文件未按预期处理。

示例

我有这三个文件:

$ ls -1 
My file 1.zip
My file 2.zip
My file 3.zip

我想列出并用它们做一些事情,所以我使用这样的循环:

for i in `ls -1 My*.zip`; do
    # statements
    echo $i;
    # Do something with each file;
done

但是就像用空格分开名字:

My
file
1.zip
My
file
2.zip
My
file
3.zip

问题

我该如何解决这个问题?,shell中是否有替代方案?

【问题讨论】:

    标签: bash shell for-loop zsh


    【解决方案1】:

    不要使用ls的输出,使用:

    for f in *.zip; do
        echo "processing $f"
    done
    

    【讨论】:

      【解决方案2】:

      不使用ls,并正确引用。

      for i in My*.zip
      do
        echo "$i"
      done
      

      【讨论】:

        【解决方案3】:
        shopt -s dotglob
        for i in *;
        do :; # work on "$i"
        done
        shopt -u dotglob
        

        默认情况下,以点开头的文件是特殊的,* 不会匹配它们。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-10
          • 2018-10-23
          • 1970-01-01
          • 2021-03-05
          • 1970-01-01
          相关资源
          最近更新 更多