Я пишу небольшой скрипт, который выводит список дубликатов файлов в каталоге, т.е.пары XXX.jpg
и XXX (1).jpg
.Я хочу использовать выходные данные этого скрипта в качестве аргумента команды, а именно ql
(быстрый просмотр), чтобы я мог просматривать все такие изображения (чтобы убедиться, что они действительно являются дублирующимися изображениями или просто именами файлов).Например, я могу сделать `ql ( '", которая позволит мне просмотреть все файлы "XXX (1) .jpg"; но я хочу включить в этот список также оригинальный "XXX.jpg"'files.
Вот мой сценарий:
dups=()
for file in *\(*; do
dups+=( "${file}" )
breakdown=( $file )
dupfile="${breakdown[0]}.jpg"
if [ -e "$dupfile" ]; then
dups+=( "$dupfile" )
fi
done
echo ${dups[@]}
Что касается создания массива требуемых имен файлов, то это работает. Но когда дело доходит до вызова чего-то вроде ql $(./printdups.sh)
, команда запутывается в именах файлов с пробелами. Она попытается открыть «XXX» в виде файла, а затем «(1) .jpg» в качестве другого файла. Поэтому вопрос в том, как я могу повторить этомассив, так что имена файлов с пробелами распознаются как таковые командой, которой я передаю их?
Я попытался изменить строку 3 на:
dups+=( "'$file'" )
И:
dups+=( "${file/ /\ }" )
Оба безрезультатно.