В Ubuntu у меня есть папка, которая содержит много (~ 10M) .txt файлов (около 1-2 КБ каждый). Папка сама по себе небольшая (около 400 МБ) и не содержит вложенных папок, только файлы .txt. Я должен перечислить это и не преуспеть в этом. (Я могу посчитать количество файлов, однако, с помощью wc -l
) вопрос: есть ли способ разделить папку так или иначе, без вызова методов, которые использует ls
?
1 ответ
0
Вы должны быть в состоянии использовать find
чтобы перечислить файлы:
find .
Использование *
или чего-то подобного в качестве аргумента команды обязательно приведет к ошибке "Список аргументов слишком длинный", но он может работать в цикле оболочки, как предложено выше Эндрю Стаббсом.
Если это не так, вы можете кормить вывод find
сверху на while
цикла , так что вы можете обрабатывать отдельные файлы:
find . | while read filename; do
dosomething $name
done
с соответствующими значениями "dosomething".
Чтобы "разделить" папку, вы можете переместить файлы, например, в подкаталоги на основе их имени, например, так:
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
Конечно, возможны более сложные схемы.