Я хотел перечислить все имена файлов в папке A и еще одной папкеB внутри папкеA и сохранил его в текстовый файл. Я использовал следующий код:
ls -1 /home/CSV_XXX/* | grep ^'/home/CSV_XXX' >/home/Lists.txt
Предположим, у меня есть папка с именем CSV_XXX в каталоге ' / home / CSV_XXX ', а внутри нее:
20161010
BDL_EXISTING_CARDS2_20161228.CSV
BDL_EXISTING_COLLATERAL_20161228.CSV
BDL_EXISTING_CUST_ADDRESS_20161228.CSV
.
.
.
' 20161010 '- это папка внутри CSV_XXX с каталогом' / home / CSV_XXX / 20161010 'и содержит:
BDL_EXISTING_CARDS2_20161010.CSV
BDL_EXISTING_COLLATERAL_20161010.CSV
BDL_EXISTING_CUST_ADDRESS_20161010.CSV
.
.
.
Однако я не смог получить то, что хочу.
Во время первой попытки я получил:
/home/CSV_XXX/BDL_EXISTING_CARDS2_20161010.CSV
/home/CSV_XXX/BDL_EXISTING_COLLATERAL_20161010.CSV
/home/CSV_XXX/BDL_EXISTING_CUST_ADDRESS_20161010.CSV
.
.
.
/home/CSV_XXX/20161010:
без списка того, что находится в папке 20161010
Кроме того, как я могу удалить каталог « / home / CSV_XXX / », если я изменю я хочу удалить его из своего списка?
только списки (включая 20161010 ):
BDL_EXISTING_CARDS2_20161228.CSV
BDL_EXISTING_COLLATERAL_20161228.CSV
BDL_EXISTING_CUST_ADDRESS_20161228.CSV
.
.
.
Возможно, вам лучше использовать команду find
например
find / home / CSV_XXX -type f -print
рекурсивно перечислит все файлы во всех каталогах в каталоге CSV_XXX.
Если вам нужны только файлы, соответствующие шаблону, вы можете сделать что-то вроде
find / home / CSV_XXX -type f -name '* .csv' -print
, и это будет печатать только имена файлов, заканчивающиеся на .csv
Если вы хотите включить каталоги в список, просто пропустите часть -типа f
.
Чтобы удалить префикс каталога;
(cd / home / CSV_XXX; find * -type f -name '* .csv' -print)
По умолчанию ls
не рекурсивно. Вам нужно будет добавить флаг -R
, чтобы он спускался в подкаталоги. Вы можете обнаружить, что find
- лучшая команда для использования, хотя, поскольку ls
не дает полного имени пути, тогда как find
делает это по умолчанию.
Чтобы удалить файл из вывода списка, используйте grep -v
.
Справочные страницы для ls
, find
и grep
могут дать вам более подробную информацию.