Я хочу, чтобы мой скрипт копировал файлы в address.list (который содержит абсолютный путь к этим файлам) в моей папке3, добавляя имя файла переменная k (имя нижних папок, из которой они пришли).использовать cp для копирования и изменения имени файла, считанного из файла. File
Сценарий имеет смысл для меня, но он не работает, в нем говорится: «cp: невозможно создать обычный файл»; какие-либо предложения?
#!/bin/bash
cd /folder1/
for k in $(cat lowerfolders_list); do
for f in $(cat addresses.lst); do
cp $f "/folder1/folder2/folder3/${k}_$f"
cd /folder1/
done
done
Точная ошибка, я получаю это "ф: не может создать обычный файл`/A/B/C/D/E/Folder1/folder2/folder3/имя моего $ к/path_to_my_file/myfile.sdf «: нет такого файла или каталога"
EDIT
было бы хорошо, даже если бы я мог скопировать эти файлы называя их только после $ к, но когда я пытался сделать это мой вывод последнего файла в моих адресах.lst несколько раз с каждым именем в моем нижнем регистре. Это сценарий, я использовал:
#!/bin/bash
cd /folder1/
for k in $(cat lowerfolders_list); do
for f in $(cat addresses.lst); do
cp "$f" "/folder1/folder2/folder3/${k}"
done
cd -
done
Любые предложения?
EDIT Решенный
#!/bin/bash
cd /folder1/
for k in $(cat lowerfolders_list); do
for f in $(cat addresses.lst); do
myfile=$(basename "$f")
cp "$f" "/folder1/folder2/folder3/${k}_${myfile}"
done
cd -
done
Спасибо всем людям, которые внесли свой вклад.
ли разрешение на создание на пользователя файлы в этом каталоге? Также почему вы используете 'cd' в цикле? 'cp' не меняет каталогов. –
У меня есть разрешение сделать это, cd в конце скрипта работал для меня один раз в подобном скрипте, поэтому я сохранил его в этом, но в любом случае не должен плохо влиять на скрипт ... я полагаю. – alikino
Использует ли 'touch"/folder1/folder2/folder3/$ {k} _ $ f "' в этом цикле вместо 'cp' правильно работать? –