我需要输入什么来获取满足以下条件的当前目录中的文件列表?
(我打算在bash脚本的循环中循环结果。)
答案 0 :(得分:2)
只使用bash:
files=()
for f in *; do [[ -d $f ]] || files+=("$f"); done
printf "%s\n" "${files[@]}"
答案 1 :(得分:0)
find . -maxdepth 1 ! -name '.*' -type f
应该可以满足您的需求
maxdepth 1
- >仅在当前目录中搜索
! -name '.*'
- >搜索与名称模式不匹配的文件'。*'
type f
- >仅搜索文件,而不是dirs
答案 2 :(得分:0)
你可以试试这个:
find $folderPath -type f -printf "%f\n" | grep -v '^[.].*'
您只需要更改$ folderPath。
<强>解释强>
找到$ folderPath -type f -printf&#34;%f \ n&#34;
使用find命令,您可以使用多个选项搜索该文件夹。
&#39; -type f&#39;只搜索文件,如果你想按文件夹过滤,你只需要更改&#39; f&#39;对于&#39;
&#39; -print&#34;%f \ n&#34;&#39;格式化命令的输出。 &#39;%F&#39;提取文件名和&#39; \ n&#39;添加回报。
&#39; |&#39;是一个管道。使用管道,您可以使用命令的输出将其用作其他命令中的输入var。
grep -v&#39; ^ [。]。*&#39;
要结束解释,如果您使用其他&#39; |&#39; (管道)你可以处理命令的每个结果,如另一个的输入。这具有更好的性能,因为输出在Stream中,并且需要更少的内存来处理结果。
答案 3 :(得分:0)
如何使用*然后跳过目录作为循环的第一步?
for F in * ; do
if test -d "$F" ; then continue ; fi
echo "$F"
done