Я пытаюсь переместить все файлы в ряд каталогов в подкаталог их соответствующей папки. Есть много папок, для которых это необходимо, поэтому я поставил их в цикле. Для примера я сократил число.mv not Recognifying Wildcards/Variable Expansion
read var1
case ${var1} in a) sub="sub_directory1";; b) sub="sub_directory2";; esac
for ((i=1; i<=5; i++)); do
case ${i} in
1) t=a;; 2) t=b;; 3) t=c;; 4) t=d;; 5) t=d;;
esac
mv "${location[files]}${t}/*.*" "${location[files]${t}/${sub}
done
${location[files]}
, ${t}
и ${sub}
все каталоги, так что структура выглядит примерно так:
/files/a/file1.txt
/files/a/file2.txt
/files/a/sub_directory1
/files/a/sub_directory2
/files/b/file33.txt.3824
/files/b/file52f.log.345
/files/b/sub_directory1
/files/b/sub_directory2
так далее, и так далее. Идея состоит в том, что файлы в /files/a/
будут перенесены в files/a/sub_directory1
.
Когда я запускаю это в скрипте, он, по-видимому, правильно расширяет переменные, но, очевидно, не правильный путь для mv. Я получаю
mv: cannot rename files/a/*.* /files/a/sub_directory1/*.*:
No such file or direbctory
Когда я делаю то же команда вручную:
mv /files/a/*.* /files/a/sub_directory1
работает как задумано.
Это то, что подстановочные знаки обрабатываются буквально?
Внутри двойных кавычках шарики не растягиваются. Вам нужно оставить их вне кавычек. –
Для кого-то другого, нового для меня, как я в будущем, который может это прочитать, комментарий Этана решил мою проблему. Я переместил цитату перед звездочкой в команде MV. – mkingsbu
Какова мотивация этого сценария? – chicks