Сопоставьте команду mv с каждой строкой списков имен файлов и каталогов - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть два файла с именами файлов и каталогов. Я хочу отобразить команду mv из каждой строки файла с именами файлов на каждую строку в файле имен каталогов. Файлы небольшие.

Если это поможет, у меня есть файлы, названные последовательно (скажем, f1, f2, f3 ... f1000). Есть ли способ сделать это, когда oop читает один файл и один каталог?

Может быть 3 варианта использования: один файл для многих каталогов, много файлов для одного каталога и много файлов для многих каталогов ( 1 файл / строка = 1 каталог / строка в моем случае). Мой вариант использования относится к последнему. Я видел xargs, который используется в некоторых случаях, но я не уверен, как изменить его для моего случая.

Следующие вопросы не помогают: Перемещение большого количества файлов

1 Ответ

2 голосов
/ 04 февраля 2020

Предполагается, что у вас есть файл с именем files , который содержит имена файлов, каждое в новой строке, и файл с именем dirs с каталогами в каждой новой строке, оба из которых имеют одинаковые количество записей, например:

files

file1
file2
file3

dirs

dir1
dir2
dir3

Затем, чтобы переместить файл1 в dir1, file2 to dir2 и т. д. вы можете использовать команду:

paste dirs files | xargs -n2 mv -t

paste соединяет строки из обоих файлов, затем xargs принимает два аргумента и вызывает с ними команду mv. Опция -t выбирает каталог назначения. Ниже приведен соответствующий фрагмент документации mv.

mv [OPTION]... -t DIRECTORY SOURCE...

-t, --target-directory=DIRECTORY
          move all SOURCE arguments into DIRECTORY
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...