запись имен файлов из подкаталогов в CSV-файл в Linux

запись имен файлов из подкаталогов в CSV-файл в Linux

Ранее я задавал очень похожий вопрос, но он касался только одного подкаталога.запись файлов в подкаталоге в 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для получения дополнительной информации.

Связанный контент