
Ранее я задавал очень похожий вопрос, но он касался только одного подкаталога.запись файлов в подкаталоге в CSV-файл и сохранение его в родительском каталоге в командной строке Linux. У меня есть каталог с именем 'dir', и в нем 5 подкаталогов, sub1, sub2,..sub5. В каждом подкаталоге много файлов. Я хотел бы записать список файлов из всех подкаталогов в файл CSV и сохранить его в каталоге 'dir' с помощью командной строки в Linux. Мой код делает это, за исключением того, что мне нужны только имена файлов (name1,name2 и т. д.), но он записывает полные имена файлов с путем (./sub1/name1,./sub1/name2 и т. д.). Командная строка, которую я использую внутри папки dir, следующая:
dir$ find . -type f > names.csv
решение1
Поскольку вы отметили свой вопрос тегом «Linux», я предполагаю, что у вас GNU find
— в этом случае вы можете использовать
find . -type f -printf '%f\n' > names.csv
От man find
:
%f File's name with any leading directories removed (only the last element).
решение2
dir$ find . -type f -execdir basename {} \; > names.csv
Объяснение
-execdir
выполняет следующую команду для каждого результата.basename {} \;
удалить часть перед финальным/
.{}
Заменители для каждого найденного каталога. Смотритеman find
для получения дополнительной информации.