我有一个bash脚本,我使用
循环遍历目录中的所有文件for x in "$path/"{.,}*; do
do some stuff here
done
这会循环遍历所有文件和目录(这就是我想要的),
但它也给了我不存在的文件.*
。
我在android上使用终端模拟器,所以它可能是一个错误。
我正在寻找一个shell解决方案,因为我没有大多数“普通Linux”命令,如sed。
答案 0 :(得分:0)
运行以下命令:
shopt -s nullglob
将禁用没有匹配未展开的globs的默认行为。请注意,这会产生令人惊讶的副作用:设置nullglob
后,ls -l *.NotFilenamesHaveThisSuffix
将与ls -l
完全相同。
那就是说,你可以做得更好:
shopt -s dotglob
for x in "$path/"*; do
printf 'Processing file: %q\n' "$x"
done
将因设置dotglob
而找到所有隐藏文件,而根本不需要{.,}
成语,并且还会一直忽略{{1 }和.
。
..
或ash
在Android设备上找到bash实际上很常见。如果您有一个基准POSIX shell,则以下内容将更加健壮。
mksh