У меня есть файл file1.txt, расположенный в испытательной папке, содержащей местоположение файлов изображений. Я хочу прочитать список и скопировать файлы изображений в новую папку, test_folder.
Записи в file1.txt похожи:
./trial/data/image1.jpg
./trial/data/image2.jpg
и т.д.
Я пытался использовать подобный вопрос решить проблему: копируйте/перемещайте список файлов к новому каталогу
Попытка
while read file; do cp "$file" /trial/test_folder; done < /trial/file1.txt
Я получаю ошибку "удар: /trial/file1.txt: Никакой такой файл или каталог". Любая справка была бы большой!
Ошибка, которую Вы получаете, состоит в том, потому что Вы читаете /trial/file1.txt
и нет ./trial/file1.txt
. Это означает, что оболочка пытается найти каталог названным trial
который находится под корневым каталогом (/
). Если Вы хотите путь, который является относительно Вашего текущего каталога, можно просто использовать:
while read file; do cp "$file" trial/test_folder; done < trial/file1.txt
Или,
while read file; do cp "$file" ./trial/test_folder; done < ./trial/file1.txt
Или, можно использовать полный путь:
while read file; do cp "$file" /home/shane/trial/test_folder; done < /home/shane/trial/file1.txt
Иначе должен использовать xargs
и cp --target-directory=...
таким образом:
xargs -r <trial/file1.txt cp --target-directory=./trial/test_folder