Я пытаюсь использовать rsync
или cp
в цикле for
для копирования файлов, соответствующих списку из 200 имен, сохраненных в новых строках в файле .txt
, которые соответствуют именам файлов с .pdbqt
расширение, которое находится в серии подкаталогов с одной родительской папкой. Файл .txt
выглядит следующим образом:
file01
file02
file08
file75
file45
...
Я попытался использовать rsync со следующей командой:
rsync -a /home/ubuntu/Project/files/pdbqt/*/*.pdbqt \
--files-from=/home/ubuntu/Project/working/output.txt \
/home/ubuntu/Project/files/top/
Когда я запускаю команду rsync, я получаю:
rsync error: syntax or usage error (code 1) at options.c(2346) [client=3.1.2]
Я написал скрипт bash следующим образом, пытаясь заставить его работать:
#!/bin/bash
for i in "$(cat /home/ubuntu/Project/working/output.txt | tr '\n' '')"; do
cp /home/ubuntu/Project/files/pdbqt/*/"$i".pdbqt /home/ubuntu/Project/files/top/;
done
Я понимаю, cat
не очень хорошая команда для использования, но я не мог найти альтернативное решение, так как я все еще плохо знаком с использованием bash. При запуске я получаю следующую ошибку:
tr: when not truncating set1, string2 must be non-empty
cp: cannot stat '/home/ubuntu/Project/files/pdbqt/*/.pdbqt': No such file or directory
Я предполагаю, что ошибка cp
выдается в результате ошибки tr, но я не уверен, как еще избавиться от \n
, считываемого из списка, разделенного новой строкой.
Ожидаемые результаты состоят в том, что из подкаталогов в /pdbqt/
с файлами 12000 .pdbqt
200 файлов из списка output.txt будут скопированы из этих подкаталогов в каталог /top/
.