如何从 ls 输出中排除输出文件

如何从 ls 输出中排除输出文件

假设我的桌面上有这些文件:

aaa.jpg  
bbb.jpg   

我想列出这两个 jpg 并将它们输出到 .txt 文件:

#!/bin/bash
cd ~/Desktop
ls -1 > all.txt

使用此代码all.txt将具有以下内容:

aaa.jpg  
bbb.jpg  
all.txt

我只想要这两个jpg all.txt

答案1

您可以仅对 .jpg 文件使用 ls 过滤器

ls *.jpg > all.txt

答案2

感谢您的回复,但我想列出所有内容,而不仅仅是 .jpg。我意识到有一个简单的解决方案

ls * > all.txt

代替

ls > all.txt

有谁知道为什么添加通配符会阻止输出文件包含自身?

答案3

比 @ShayneManning 提出的解决方案更通用的解决方案:

ls | grep -v '^all.txt$' > all.txt

grep用于按内容过滤行。该选项-v反转过滤器。因此,all.txt将从 的输出中排除ls。所有其他名称将打印到all.txt.

相关内容