![列出目录中的文件而不列出当前目录中的文件](https://linux22.com/image/116346/%E5%88%97%E5%87%BA%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E8%80%8C%E4%B8%8D%E5%88%97%E5%87%BA%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6.png)
*.txt
假设我的目录中有一个文件txtpath=/path/to/txt/
。
我想列出当前目录(而不是)*.txt
中的文件,而不列出当前目录中的文件,因为如果我执行.$txtpath
$txtpath
ls *.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 中),否则会给出相同的结果。