Bash l oop через несколько каталогов - PullRequest
0 голосов
/ 07 августа 2020

Я не знаю, был ли достигнут этот топи c или бот не смог найти ничего связанного.

У меня есть сценарий bash, и я хочу выполнить для l oop через несколько каталогов с упоминанием, что я хочу вывести в файл журнала только *.txt/files, но l oop не go в подкаталогах.

Я хочу использовать каталоги в переменные. Я использую массив, в котором я записал каталоги, которые я ищу. Когда запускается скрипт, выводится то, что находится в массиве, а не то, что находится в каталогах ...

Вот как теперь выглядит мой код, что мне делать?:

#!/bin/bash

l=/home/Files/Test1/
j=/home/Files/Test2/
k=/home/Files/Test3/

arr=("$l" "$j" "$k")

for i in "${arr[*]}"
do
  echo "$i"  >> test
done

Спасибо за любую помощь!

1 Ответ

2 голосов
/ 07 августа 2020

Только find фактические файлы.

find "${arr[@]}" -maxdepth 1 -type f >> test

Вы могли зависеть от расширения имени файла оболочки:

for dir in "${arr[@]}" # properly handle spaces in array values
do
      for file in "$dir"/*; do
          # check for empty dir
          if [ -f "$file" ]; then
              # Use printf, in case file is named ex. `-e`
              printf "%s\n" "$file"
          fi
      done
# don't reopen the file on each loop, just open it once
done >> test

но это намного больше, просто find ит.

...