Как создать новый файл, который содержит имя файла и информацию о его исходном каталоге

Как создать новый файл, который содержит имя файла и информацию о его исходном каталоге

У меня есть каталог, который содержит так много подкаталогов и файлов в них. Я хотел бы создать файл, который предоставляет имя каждого файла и его исходный путь к каталогу

Например:

  • У меня есть папка с именем sample, которая содержит в себе подкаталоги sample1 и sample2.
  • У меня есть ex1.csv, ex2.csv в каталоге образца 1 и ex3.csv, ex4.csv в каталоге образца 2.

Мне нужно создать текстовый файл (или) CSV-файл, который предоставит информацию следующим образом:

ex1.csv,образец/образец1

ex2.csv,образец/образец1

ex3.csv,образец/образец2

Было бы здорово, если бы кто-нибудь помог мне создать файл скрипта в unix.

заранее спасибо

решение1

Учитывая такую ​​структуру, как

$ tree sample
sample
├── sample1
│   ├── ex1.csv
│   └── ex2.csv
└── sample2
    ├── ex3.csv
    └── ex4.csv

2 directories, 4 files

вы можете использовать

$ find sample -type f -printf '%f,%h\n'
ex2.csv,sample/sample1
ex1.csv,sample/sample1
ex3.csv,sample/sample2
ex4.csv,sample/sample2

Из man find, соответствующие -printfспецификаторы формата:

       %f     File's  name  with  any leading directories removed (only
              the last element).

       %h     Leading directories of file's name (all but the last ele‐
              ment).  If the file name contains no slashes (since it is
              in the current directory) the  %h  specifier  expands  to
              ".".

Если вам нужны результаты в файле, просто перенаправьте вывод команды с помощью >оператора, например:

find sample -type f -printf '%f,%h\n' > filelist

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