我试图通过执行以下操作,仅在bash中的文件夹的子目录中列出除隐藏文件之外的所有文件:
$ find ./public -mindepth 3 -type f -not -path '*/\.*'
返回:
./public/mobile/images/image1.jpg
./public/mobile/images/image2.png
./public/mobile/images/image3.jpg
./public/mobile/javascripts/java1.js
./public/mobile/javascripts/java2.js
./public/mobile/javascripts/java3.js
./public/mobile/stylesheets/main.css
./public/mobile/views/doc1.html
./public/mobile/views/doc2.html
./public/mobile/views/doc3.html
如何忽略文件路径并仅显示扩展名为?
的文件名谢谢:)
答案 0 :(得分:1)
另外-printf
命令使用find
,而不是-print
。
find ./public -mindepth 3 -type f -not -path '*/\.*' -printf %f\\n
请注意\\n
的使用情况 - 您需要\n
在文件名后添加新行,但添加另一个\
作为转义或添加一些引号以防止解释{{1}通过shell
答案 1 :(得分:0)
如果您使用bash
4或更高版本,则可以跳过使用find
并使用文件模式。
shopt -s globstar # For **
printf "%s\n" public/*/*/**/*.*
如果您希望某些文件没有扩展名,则需要使用循环并过滤掉 非文件手动匹配。
for f in */*/*/**/*; do
[[ -f $f ]] || continue
printf "%s\n" "${f##*/}"
done