如何列出 /etc 中以“a”或“c”开头的文件。

如何列出 /etc 中以“a”或“c”开头的文件。

我尝试过ls /etc/[ac]*,但它显示以以下开头的目录A或者C及其全部内容,而不是以“开头的文件A“ 或者 ”C”。

答案1

为了避免列出目录的内容,您可以:

ls -d /etc/[ac]*

这将列出目录名字以及以a或开头的普通文件名c

为了完整起见,不涉及的解决方案find可能是:

ls -ld /etc/[ac]* | grep ^- | tr -s ' ' | cut -d' ' -f9

答案2

递归地:

find /etc -type f -name '[ac]*'

如果您需要非递归,您可以便携式地执行此操作:

find /etc/. ! -name . -prune -type f -name '[ac]*'

或者这个,不可移植的(GNU 或最近的 BSD 发现):

find /etc -type f -maxdepth 1 -name '[ac]*'

如果您想不区分大小写地执行此操作,请使用-iname而不是-name.

答案3

如果您想要目录(不是目录的内容)和文件,您可以使用printfbultin:

printf "%s\n" [ac]*

例子:

$ printf "%s\n" [te]*
examples.desktop
teamviewer_linux.deb
test.php
test.txt

答案4

你也可以尝试这个命令,

for file in /etc/[ac]*; do echo $file; done | xargs file | awk -v FS=" +" '$2~/directory/ {next;} {print $1}' | sed 's|\/etc\/||g;s/://g'

相关内容