рекурсивный 'ls', дающий абсолютные имена файлов

Когда я делаю «ls -R» в каталоге, я получаю что-то вроде

./dir1 dir2 file1.txt file2.txt ./dir1/dir2 file3.txt file4.txt 

но мне нужна команда, которая дает мне

 ./dir1/file1.txt ./dir1/file2.txt ./dir1/dir2/file3.txt ./dir1/dir2/file4.txt 

так что я могу использовать его в цикле for для обработки всех файлов.

3 Solutions collect form web for “рекурсивный 'ls', дающий абсолютные имена файлов”

Вы хотите find(1) . Это будет делать именно то, что вы хотите. Вы также можете указать различные условия фильтра, такие как тип файла (не включать каталоги), новее, чем отметка времени для данного файла и т. Д. Страница руководства будет описывать их более подробно.

Кроме того, взгляните на параметр -exec ; вы можете использовать это вместо повторения вывода.

Если вы используете bash ≥4 или zsh или ksh93 ≥o + 1 , вы можете сделать оболочку рекурсивным глобированием: **/ wildcard соответствует каталогам на любой глубине. В bash вам нужно включить эту функцию с помощью shopt -s globstar (bash), и остерегайтесь, чтобы до bash 4.2, **/ трассировки символических ссылок на каталоги. В ksh93 вам нужно set -o globstar (ksh93); В zsh он всегда включен.

 for x in **/*.txt; do … 

Если вам нужен ваш скрипт для переносимости в другие оболочки, используйте команду find , это точно правильный инструмент для работы. Обратите внимание, что find – это внешняя команда, которая может работать двумя способами: она может генерировать список файлов и может выполнять команды для каждого файла. Если вы хотите выполнить команду для каждого файла, используйте -exec :

 find . -type f -name '*.txt' -exec chmod a+r {} + 

1 Среди снарядов, отличных от Bourne, fish и tcsh также имеют функцию

tree также является хорошим инструментом для этого.

я использую

 tree -Dpushfag --du 

вы также можете добавить лимит в глубину, например, максимум 2 уровня:

 tree -Dpushfag --du -L 2 
  • Tmux затмил расцветку вывода ls
  • Найти / ls кеширование
  • Где «документально подтверждается вывод команды« ls »по вертикали»?
  • Как просмотреть файлы на терминале, чтобы мы могли видеть типы файлов, такие как исполняемый файл, ascii и т. Д.?
  • Возможно ли, чтобы ls поддерживал порядок своих входов
  • Определить количество файлов в каталоге, только глядя на `ls -ald`
  • linux + как игнорировать (фильтровать) файл с пространством
  • Найти использование дискового пространства в каталоге и всех его файлов
  • Какой вариант ls следует использовать для понимания изменений метаданных?
  • shopt -s extglob работает не так, как ожидалось
  • Как извлечь длинное поле для листинга?
  • Interesting Posts

    Можно ли управлять несколькими мониторами с одного CRTC?

    в Bash, как не включать дополнительные аргументы в псевдоним?

    Как включить удаленный вход в систему?

    Как установить Octave без GUI в Ubuntu 16.04?

    Как рассчитать уровень шума аудиофайла с помощью ffmpeg?

    Замена многострочных последовательных тегов одной строкой с использованием sed и игнорирование пробелов

    rsh показывает «опрос: отказ протокола в настройке схемы», почему?

    Как я могу использовать cron для отображения сообщений на экране через notify-send

    Как обрабатывать исключительную страницу при распределении смежных страниц кеша в Linux

    перенаправление echo / printf не работает в фоновом режиме

    Закройте все трубные команды, если закрыть

    Как сделать ручку изменения часового пояса Ubuntu?

    Вопрос о маршрутизации Linux

    Использование опции less's show show line

    Подавлять конкретные экземпляры ключа поиска в grep

    Linux и Unix - лучшая ОС в мире.