Помогите мне, пожалуйста, найти мое недоразумение об этом маленьком фрагменте скрипта

На самом деле у меня есть папка, которая содержит несколько подпапок с большим количеством изображений в каждой.

Я пытаюсь собрать все имена файлов в каждой подпапке в текстовом файле (filesNames.txt) в этой подпапке в виде:

Абсолютный / путь / в / каждый / файл / имя файла

Итак, я написал скрипт в родительской папке:

#!/bin/sh for dir in "$PWD"/*/; do arr=( "$dir"* ) cd "$dir" printf "%s 1\n" "$PWD/${arr[@]##*/}" > "$dir"filesNames.txt cd .. done 

Моя проблема в том, что:

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

  /run/media/parent_folder/subfolder/filename1.png filename2.png filename3.png ... 

Я думаю, что это связано с переменной $ PWD, которую я перебираю по ней только один раз для каждой подпапки. Как изменить сценарий в подходящей форме?

Заранее спасибо.

2 Solutions collect form web for “Помогите мне, пожалуйста, найти мое недоразумение об этом маленьком фрагменте скрипта”

Команда Single find выведет все файлы с абсолютным путем

 find $(pwd) -type f 

И если вы хотите сделать это с помощью чистого сценария оболочки и не хотите использовать find, попробуйте этот маленький:

 #!/bin/bash #Simple bash recursive loop search - Luciano A. Martini =) nextdir(){ for f in *; do if [ -d "$f" ] && [ ! -L "$f" ]; then #echo "Inside folder: $PWD/$f" nextdir "$f" cd .. continue else echo "$PWD/$f" fi done } #call the function for the first time... nextdir 

Сохраните, например, как рекурсивный цикл и выполните в папке, которую вы хотите выполнить. Он будет делать именно то, что находит или другие рекурсивные механизмы, но использует цикл for, и вы можете настроить его для своих нужд!

 $./recursive-loop /home/luciano/readme.txt /home/luciano/images/a.bmp /home/luciano/texts/a.txt /home/luciano/texts/b.txt /home/luciano/texts/music/lyrics.txt (...) 
  • Как разобрать XML в CSV с помощью сценария оболочки?
  • Выровнять текст в центр с заполнением с обеих сторон
  • Как я могу поддерживать sudo в сценарии bash?
  • Использование `kill -s 0 $ pid` vs` ] `, чтобы определить, работает ли PID
  • Выполните параллельные команды запуска и дождитесь завершения одной группы команд до начала следующего
  • Что делает выход в блоке if в сценарии оболочки?
  • Скрипт для чтения строки за строкой из файла, который передается другой команде и выводится в другой файл
  • В bash вместо создания новой строки изменения уже сделанной строки
  • Разбор файла в linux: сохранение только временных меток
  • Хорошая или плохая практика? Перенаправление на stderr?
  • Как удалить последнюю запятую каждой строки csv с помощью linux
  • Interesting Posts

    Запустить уведомление-демон в качестве службы

    Удалите несколько строк из файла, используя grep

    Проблемы с копированием больших файлов на USB-накопитель

    Сравнение двух файлов и запись несогласованных строк вместе с несогласованными столбцами. Указание несогласованных столбцов – это моя основная проблема

    Где настройки модуля prefork.c на стеке AWS EC2 LAMP?

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

    В чем разница между `/ sbin / ip route` и` / sbin / route`?

    Как настроить nginx для динамического чтения папок, учетных записей пользователей / доменов?

    Задание локального libc вызывает глобальный libc?

    кто может получить подсчет «базового subDir», не имея subDirs?

    «Zip warning: имя не соответствует» при сжатии каталога

    Установка Qt Creator на Debian

    ifdown bond0: 0 снимает bond0 с ним

    Обработка аргументов в указанном порядке в / usr / bin / printf или Bash printf

    Отображение как ls информации, так и точек монтирования каталога?

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