【问题标题】:How to list only the file names and not its attributes in a directory( in Linux)?如何仅列出目录中的文件名而不列出其属性(在 Linux 中)?
【发布时间】:2015-01-19 13:53:02
【问题描述】:

我正在尝试编写一个 bash 脚本,通过从给定目录中的图像中进行选择来自动更改桌面背景。我面临的问题是,当我尝试使用“ls”命令列出图像时,它还显示了它的属性。有没有一种方法可以只列出文件名而没有其他属性。

这里,如果 TEST_DIR= /home/vivek/Downloads 那么

ls $TEST_DIR/*.jpeg -o $TEST_DIR/*.png -o $TEST_DIR/*.jpg

输出为

-rw-rw-r-- 1 vivek   7221 Sep  5 20:42 /home/vivek/Downloads/viv.jpeg

我只需要输出为“/home/vivek/Downloads/viv.jpeg”。

编辑:

从命令中删除“-o”后脚本运行良好。

之前我使用“-o”来表示“或”关键字。

但是现在,

ls $TEST_DIR/*.jpeg $TEST_DIR/*.png $TEST_DIR/*.jpg

给了我我需要的输出。谢谢。

【问题讨论】:

  • 已经有程序可以做到这一点。如果这是您从ls 的输出,那就是别名。您是否在脚本中尝试过 ls 并看到该输出? -o 也不是 ls 的参数。

标签: linux bash scripting


【解决方案1】:

您将-o 传递给ls(两次,甚至)。删除它,因为它意味着:

      -o     like -l, but do not list group information

您也可以将其缩短为:

ls $TEST_DIR/*.{jpeg,png,jpg}

【讨论】:

    【解决方案2】:

    你的ls 可能是aliased 的东西。看看这打印了什么:

    $ alias ls
    

    它应该可以在脚本中正常工作,因为默认情况下会忽略别名。

    【讨论】:

    • 这就是我得到的... " alias ls='ls --color=auto' "
    • 在那种情况下...我添加了一个更好的答案:)
    【解决方案3】:

    试试这个,使用cut命令如下;

    ls $TEST_DIR/*.{jpeg,png,jpg}|cut -d':' -f2|cut -d' ' -f2
    

    它将使用: 和空格排除不需要的文本以查找结果。

    它会给你这个输出

    /home/vivek/Downloads/viv.jpeg
    

    【讨论】:

      猜你喜欢
      • 2011-09-04
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多