在 ubuntu 中,我有一个文件夹,其中包含许多 (~10M) .txt 文件(每个大约 1-2KB)。文件夹本身并不大(大约 400MB),并且不包含子文件夹,只有 .txt 文件。我需要列出它,但没有成功。(不过,我可以用 计算文件数量wc -l
)问题是:有没有办法以某种方式或其他方式拆分文件夹,而无需调用ls
使用的方法?
答案1
您应该能够使用find
以下命令列出文件:
find .
使用*
或类似的东西作为命令参数必然会给你一个“参数列表太长”的错误,但它可能像 Andrew Stubbs 上面建议的那样,在 shell 循环中工作。
如果没有,您可以将find
上面的输出提供给while
循环,以便处理单个文件:
find . | while read filename; do
dosomething $name
done
具有适当的“做某事”价值观。
要“拆分”文件夹,您可以根据文件名称将文件移动到子目录,例如,如下所示:
mkdir _a _b _c _d _e _f _g _h _i _j _k _l _m _n _o _p _q _r _s _t _u _v _w _x _y
find . | while read filename; do
case $filename in
a*) mv $filename _a;;
b*) mv $filename _b;;
[...]
z*) mv $filename _z;;
esac
done
当然,更复杂的方案也是可能的。