如何只列出文件名而不列出目录中的属性(in Linux)?

How to list only the file names and not its attributes in a directory( in Linux)?

我正在尝试编写一个 bash 脚本,通过从给定 directory.The 中的图像中进行选择来自动更改桌面背景 我面临的问题是,当我尝试使用 "ls" 命令来列出图像,它还显示它的 attributes.Is 有一种方法,我只能列出文件名和它的其他属性的 none。

这里,if if 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”来表示 "or" 关键字。

但是现在,

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

准确地给出了我需要的输出。谢谢

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

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

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

它会给你这个输出:

/home/vivek/Downloads/viv.jpeg

你的 ls 可能是 aliased 的东西。看看打印出来的内容:

$ alias ls

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

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

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

您也可以将其缩短为:

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