Домашняя » как » Как скопировать файл в несколько каталогов с помощью одной команды в Linux

    Как скопировать файл в несколько каталогов с помощью одной команды в Linux

    Копировать файл с помощью командной строки Linux легко. Однако что делать, если вы хотите скопировать один и тот же файл в несколько разных мест? Это тоже легко, и мы покажем вам, как это сделать с помощью одной команды.

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

    cp ~ / Documents / FileToBeCopied.txt ~ / TextFiles /

    Чтобы скопировать его в еще два каталога, многие просто запустят команду еще два раза с разными адресами:

    cp ~ / Documents / FileToBeCopied.txt ~ / Dropbox /
    cp ~ / Documents / FileToBeCopied.txt / media / lori / MYUSBDRIVE /

    Тем не менее, мы можем выполнить ту же задачу с помощью одной команды:

    echo dir1 dir2 dir3 | xargs -n 1 cp file1

    Вот как эта команда работает. эхо Команда обычно пишет на экран. Однако в этом случае мы хотим скормить вывод эхо Команда в качестве входа в xargs команда. Для этого мы используем символ трубы ( | ) который передает выходные данные одной команды в качестве входных данных для другой. xargs команда запустит ср три раза, каждый раз добавляя следующий путь к каталогу из эхо Команда до конца ср команда. Есть три аргумента, передаваемых xargs , но -№ 1 вариант на xargs Команда говорит ему, чтобы добавить только один из этих аргументов одновременно ср Команда каждый раз, когда он запускается.

    Итак, чтобы придерживаться нашего примера из предыдущих, три отдельных ср Команды выше могут быть объединены в одну команду следующим образом:

    echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp ~ / Documents / FileToBeCopied.txt

    Обратите внимание, что если копируемый файл существует в любом из указанных каталогов назначения, файл в этом месте назначения будет заменен автоматически. Вас не спросят, хотите ли вы заменить файл. (Обычно, когда вы используете ср Команда для копирования файла в одном месте, вы можете добавить возможность спросить, хотите ли вы заменить существующий файл. Тем не менее опция является интерактивной опцией (она вызывает ср команда для запроса ввода от пользователя), и вы не можете использовать интерактивную опцию с ср команда при использовании его в сочетании с xargs .)

    Еще одна вещь, которую следует учитывать, это то, что если вы копируете очень большой файл, вы можете добавить no-clobber ( -N ) вариант к ср команда в единственной команде выше. Эта опция автоматически предотвращает перезапись файла в месте назначения, если он там уже существует. Если вы копируете очень большой файл по сети, он может быть медленным, и вы можете не использовать ресурсы, необходимые для копирования и замены файла. Следующая команда добавляет -N и не будет копировать файл в любое место назначения, указанное в аргументах оператора echo, если файл уже существует в этом месте назначения.

    echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp -n ~ / Documents / FileToBeCopied.txt

    Введите man echo, man xargs или man cp в командной строке в Linux для получения дополнительной информации о любой из этих команд.