列出目录中的文件而不列出当前目录中的文件

列出目录中的文件而不列出当前目录中的文件

*.txt假设我的目录中有一个文件txtpath=/path/to/txt/

我想列出当前目录(而不是)*.txt中的文件,而不列出当前目录中的文件,因为如果我执行.$txtpath$txtpathls *.txt $txtpath

*.txt我设法仅$txtpath使用以下命令列出文件:find $txtpath -name '*.txt' | sed 's/\// /g' | grep -o '[^ ]*$'

但也许有更优雅的解决方案?

答案1

只需指定完整路径以及模式:

ls -d -- "${txtpath}"/*.txt

尽管实际上清单由 shell 通配完成,ls最终只打印从 shell 接收的参数。你不妨printf在这里使用:

printf '%s\n' "${txtpath}"/*.txt

除非txt目录中没有非隐藏文件(在不取消不匹配的全局命令的 shell 中),否则会给出相同的结果。

相关内容