
У меня есть каталог, который содержит так много подкаталогов и файлов в них. Я хотел бы создать файл, который предоставляет имя каждого файла и его исходный путь к каталогу
Например:
- У меня есть папка с именем 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