Перемещение файлов из одного подкаталога в другой
Я пытался переместить файлы из одного каталога в другой и не работал. поэтому я искал и нашел ответ, который соответствует тому, что я хочу. Когда я запускаю его, модифицированный в мой каталог, он дает
Что хочу сделать:
${filename,,*}
: плохая замена!
Это то, что я использовал:
for filename in *; do
case "${filename,,*}" in
b01.nii*) mv "$filename" "$/Users/dave/Desktop/test/untitled_folder_*/str" ;;
vol_01.nii*) mv "$filename" "$/Users/dave/Desktop/test/untitled_folder_*/rs" ;;
*) echo "don't know where to put $filename";;
esac
done
Спасибо
1 ответ
У вас две ошибки:
основная проблема - команда for, переменная $filename
содержит *
а не настоящее имя файла. Вы должны использовать для имени файла в $(find . -name "*");do
второй случай:
Вы должны быть уверены в $filename
значение переменной, т.е. в моей оболочке bash, вывод имени файла
./b01.nii
./vol_01.nii
лучше использовать следующий синтаксис в случае ./b01.nii* )
Я заменил ваш mv
с echo
просто чтобы проверить скрипт:
for filename in $(find . -name "*"); do
case ${filename} in
./b01.nii* )
echo "$filename ${filename}/Users/dave/Desktop/test/untitled_folder_*/str" ;;
./vol_01.nii* )
echo "$filename ${filename}/Users/dave/Desktop/test/untitled_folder_*/rs" ;;
*)
echo "don't know where to put $filename";;
esac
done
мой вывод
sh-4.3$ bash -f main.sh
don't know where to put .
don't know where to put ./main.sh
don't know where to put ./.cg_conf
don't know where to put ./myfile_12345
don't know where to put ./myfile_17676
don't know where to put ./myfile_9898
don't know where to put ./Newfile.sh
./b01.nii ./b01.nii/Users/dave/Desktop/test/untitled_folder_*/str
./vol_01.nii ./vol_01.nii/Users/dave/Desktop/test/untitled_folder_*/rs
С уважением
Claudio