在点文件上执行 ls
我的目录包含:
$ ls -A
.dotfile20091021 file20091020 file20091021
我想列出名称中包含 20091021 的所有文件。
如果我运行:
$ ls -A *20091021*
file20091021
如果我运行:
$ ls -A .*20091021*
.dotfile20091021
我可以用一个“ls”命令获取这两个文件吗?
答案1
答案2
ls -A1 | grep "20091021"
答案3
你可以简单地做
ls -a *20091021 .*20091021
(严格遵守您的要求,您希望在单个中完成此操作ls
)
答案4
您依赖(无论您使用什么 shell)来进行全局扩展。
ls -lah | grep \.foo
.. 可能有助于您以便携的方式解决这个问题。
例如:
user@tower:~ ls -lah | grep \.mozilla
drwx------ 3 root root 4.0K 2007-11-14 06:17 .mozilla
user@tower:~
看看管道的威力吧 :) 扩展它需要读者练习。shopt 不可移植,在使用严格 POSIX shell(如 dash)的系统上它会崩溃。最好写得简单、可移植……否则你会将经过验证的脚本上传到运行其他发行版的机器上,然后看着它崩溃,非常糟糕。
注意,每个 shell 都以自己的方式进行全局扩展,这大致由其许可证决定。请尽量避免使用 bashism。Ubuntu 花费了数万美元来消除其产品中的这些内容。