Я пытаюсь скопировать и переименовать файлы изображений из одного каталога в другой каталог.
Файлам, которые я хочу скопировать, встроили пробелы в их имена файлов, и я хочу заменить часть имени файла с датой, что изображение было взято.
Ниже пример имен файлов и команды, которую я использовал, наряду с примером сообщений об ошибках, что я видел.
Например, я хотел бы скопировать "2008_08_17_Transfer 001.jpg" файл из исходного каталога и переименовать его к "20090314001.jpg" в целевом каталоге и т.д для каждого файла в исходном каталоге, который запускается с "2008_08_17_Transfer".
Вот то, что я попробовал и сообщения об ошибках, которые я вижу:
$ ls -l
total 241968
-rw------- 1 stephen stephen 1347770 Mar 14 2009 2008_08_17_Transfer 001.jpg
-rw------- 1 stephen stephen 1077919 Mar 14 2009 2008_08_17_Transfer 002.jpg
-rw------- 1 stephen stephen 1359947 Mar 14 2009 2008_08_17_Transfer 003.jpg
-rw------- 1 stephen stephen 1309175 Mar 14 2009 2008_08_17_Transfer 004.jpg
-rw------- 1 stephen stephen 1404298 Mar 14 2009 2008_08_17_Transfer 005.jpg
...
for i in *.jpg ; do scp -p "$i" /media/stephen/WDMyBook1_ext4/PicturesRenamedByDateTaken/2009/20090314/20090314`echo "$i" ` ; done
001.jpg: No such file or directory
002.jpg: No such file or directory
003.jpg: No such file or directory
for i in *.jpg ; do
cp -p "$i" "/media/stephen/WDMyBook1_ext4/PicturesRenamedByDateTaken/2009/20090314/20090314${i##* }"
done
расширение параметра оболочки ${i##* }
удаляет самый длинный префикс, заканчивающийся в пространстве (т.е. все до и включая пространство перед 00n.jpg
числовой суффикс). Нет никакой потребности использовать echo
.
я предполагаю, что это - локальная копия, таким образом, Вам не нужно scp
.
Примечание: если Вы хотите к , происходят 20090314
программно от имени каталога, это выполнимо - но очевидно усложняет вещи немного.
Просто поместите кавычки вокруг имени файла, как это
for i in *.jpg ; do scp -p "$i" "/media/stephen/WDMyBook1_ext4/PicturesRenamedByDateTaken/2009/20090314/20090314`echo "$i" `" ; done