Первоначально я использовал интерполяционный трюк без кавычек.Например, если у вас есть строки в файле, по одной на строку, и вы хотите, чтобы они были горизонтальными, вам не нужно использовать paste -
файл с именем foo:
a
b
c
затемВы можете сказать:
echo $(<foo)
и получите
a b c
Но это может вызвать проблемы с именами файлов, особенно если они содержат специальные символы или пробелы.
СпасибоГордону Дэвиссону для простого обновления!
for d in /home/maindir/* # includes full path each time
do [[ -d "$d" ]] || continue # ignore nondirectories
cd "$d" # go there to make filenames path-bare
echo "$d:" *
done
Обратите внимание, что это все еще включает подкаталоги.Вам нужно пропустить это?Если вы хотите быть более осторожным -
for d in /charter/apps/*
do [[ -d "$d" ]] || continue
cd "$d"
dir="$d: "
hit=0
for f in *
do if [[ -f "$f" ]]
then hit=1
dir="$dir $f "
fi
done
(( $hit )) && printf "$dir\n"
done
Этот также должен работать с файлами со встроенными пробелами & c.