Bash命令以获取目录中的文件列表
我必须键入什么才能获得当前目录中满足以下条件的文件列表Bash命令以获取目录中的文件列表,bash,shell,Bash,Shell,我必须键入什么才能获得当前目录中满足以下条件的文件列表 不应包括隐藏文件(以“.”开头) 不应包括文件夹名称 文件名应包括其扩展名 不应将带空格的文件名拆分为多个列表项 (我打算在bash脚本中的foor循环中循环结果。) 应该适合你的需要 maxdepth 1->仅在当前目录中搜索 -名称“*”->搜索与名称模式“*”不匹配的文件 类型f->只搜索文件,不搜索目录您可以尝试以下方法: find $folderPath -type f -printf "%f\n" | grep -v
- 不应包括隐藏文件(以“.”开头)
- 不应包括文件夹名称
- 文件名应包括其扩展名
- 不应将带空格的文件名拆分为多个列表项
maxdepth 1
->仅在当前目录中搜索
-名称“*”
->搜索与名称模式“*”不匹配的文件
类型f
->只搜索文件,不搜索目录您可以尝试以下方法:
find $folderPath -type f -printf "%f\n" | grep -v '^[.].*'
您只需更改$folderPath
解释
查找$folderPath-type f-printf“%f\n”
使用“查找”命令,您可以使用多个选项搜索文件夹
- “-type f”仅搜索文件,如果要按文件夹筛选,只需更改“d”的“f”
- “-打印“%f\n”格式化命令的输出。”f'提取文件名并'\n'添加一个返回值
- “|”是一根管子。通过管道,您可以使用命令的输出,将其用作其他命令中的输入变量
- grep是一个命令,用于查找输入文本中的正则表达式
- 使用选项'-v'^[.].*',可以排除包含正则表达式的值。在本例中,以a开头的单词。(点)
files=()
for f in *; do [[ -d $f ]] || files+=("$f"); done
printf "%s\n" "${files[@]}"
使用*然后跳过目录作为循环的第一步怎么样
for F in * ; do
if test -d "$F" ; then continue ; fi
echo "$F"
done
在bash脚本中的for循环中使用什么?使用find in there是否合理,或者是否有更好的方法?向上投票并向10万代表表示热烈祝贺!在
done
@tripleee之前需要一个语句终止符(分号或换行符)。那里有一个换行符。格式化后的帖子为我展示了它。我并不怀疑你-也许有一个特定于浏览器、特定于用户等的bug。请参阅源代码和/或格式帮助以找出差异。
for F in * ; do
if test -d "$F" ; then continue ; fi
echo "$F"
done