Скопируйте файл в несколько каталогов в командной строке в Linux
В этом кратком руководстве мы обсудим, как скопировать файл в несколько каталогов из командной строки, используя find
, cp
, echo
, команды xargs
и tee
в Linux.
На днях я хотел скопировать несколько видео в разные папки на рабочем столе Arch Linux. Как вы уже знаете, мы можем легко сделать это, щелкнув правой кнопкой мыши файл, выбрав опцию Копировать
в контекстном меню и вставив его в целевой каталог/папку.
Однако я хотел бы знать, есть ли другой способ скопировать файл в несколько каталогов за один раз. Я подумал, что это поможет, когда я хочу скопировать один файл одновременно в несколько разных каталогов. Я провел несколько поисков в Интернете и нашел следующие решения.
Важное предупреждение:
Обратите внимание, что следующие команды не запрашивают никакого подтверждения. Если в целевом каталоге существует файл с таким же именем, он будет заменен автоматически.
Если вы новичок в Linux, я предлагаю вам протестировать команды на любых тестовых машинах, прежде чем начинать использовать их в рабочей среде. Таким образом, вы можете предотвратить ненужную потерю данных.
Скопируйте файл в несколько каталогов из командной строки в Linux
У меня есть текстовый файл с именем ostechnix.txt
в моем домашнем каталоге, и я хотел скопировать его в два разных каталога с именем Загрузки
< и Документы
за один раз.
Сначала давайте посмотрим, как скопировать файл в несколько разных каталогов с помощью команд find
и cp
.
Способ 1: использование команд find и cp
Мы можем скопировать один файл в несколько каталогов одновременно, используя команды find
и cp
.
find
— это команда Unix и Linux для поиска файлов в иерархии каталогов, а команда cp используется для копирования файлов и каталогов.
Чтобы скопировать файл с именем ostechnix.txt
в каталоги ~/Downloads
и ~/Documents
с помощью find
и >cp
, запустите:
find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp ostechnix.txt {} \;
Скопируйте файл в несколько разных каталогов, используя команды find и cp в Linux.
Приведенная выше команда скопирует файл ostechnix.txt из текущего каталога в каталоги ~/Downloads
и ~/Documents
.
Если вы не укажете параметр '-maxlength 0'
, файл ostechnix.txt
будет скопирован в ~/Downloads
, ~/Documents
, а также в их подкаталоги. Так что не забудьте указать это.
Как я предупреждал ранее, если в любом из целевых каталогов уже существует файл с таким же именем (например, ostechnix.txt
), приведенная выше команда просто перезапишет существующий файл без какого-либо подтверждения.
Если вы не хотите перезаписывать существующий файл, вы можете использовать флаг -n
с командой cp
, как показано ниже:
find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp -n ostechnix.txt {} \;
Теперь он не заменит целевой файл, если он уже существует в местах назначения.
Способ 2: использование команд echo, xargs и cp
Другой способ скопировать файлы в несколько мест — использовать команды echo
, xargs
и cp
.
Как вы уже знаете, команда cp
используется для копирования файлов и каталогов, а команда xargs
используется для построения и выполнения командных строк из стандартного ввода.
Чтобы скопировать файл в несколько каталогов с помощью команд echo
, xargs
и cp
, выполните:
echo ~/Downloads ~/Documents | xargs -n 1 cp ostechnix.txt
Скопируйте файл в несколько каталогов с помощью команд cp, echo и xargs в Linux.
Давайте разберем приведенную выше команду и посмотрим, как она работает.
Обычно команда echo
выводит заданную строку или текст на стандартный вывод. Но в этом случае мы передаем вывод команды echo
в xargs
. Здесь команда echo
отправит путь к каталогу в xargs
в качестве входных данных.
Команда xargs
запускает команду cp
два раза и добавляет путь к каждому каталогу в конец команды cp
.
Команды xargs
получают два аргумента (т. е. путь к каталогу) от команды echo
. Параметр -n 1
в команде xargs
указывает xargs
добавлять только один из этих аргументов за раз.
Опять же, приведенная выше команда заменяет целевой файл, если он уже существует. Если вы не хотите заменять целевой файл, добавьте в команду флаг -n
:
echo ~/Downloads ~/Documents | xargs -n 1 cp -n ostechnix.txt
Способ 3 — использование команды тройник
Tee
– это утилита для Unix и Linux, используемая для чтения со стандартного ввода и записи в стандартный вывод и файлы.
Теперь давайте скопируем файл ostechnix.txt в два разных каталога: /home/sk/Downloads
и /. home/sk/Documents
.
Для этого просто запустите следующую команду из Терминала:
tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt
Приведенная выше команда скопирует файл ostechnix.txt
из домашнего каталога в каталоги ~/Downloads
и ~/Documents
.
Обратите внимание, что команда tee
также записывает входные данные в стандартный вывод. Если вы не хотите, чтобы команда tee
делала это, просто перенаправьте стандартный вывод на /dev/null
, как показано ниже.
tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt >/dev/null
Скопируйте файл в несколько разных каталогов с помощью команды tee в Linux.
Еще раз предупреждаю вас. Если в местах назначения уже существует файл с таким же именем (например, ostechnix.txt
), приведенная выше команда перезапишет существующий файл.
Для получения подробной информации проверьте страницы руководства приведенных выше команд:
man cp
man find
man xargs
man echo
man tee
Заключение
Вот как мы копируем файл в несколько каталогов одновременно из командной строки в Linux. Могут быть и другие способы, но я считаю, что эти команды очень просты и удобны в использовании.
Опять же, убедитесь, что пути назначения верны, и, что наиболее важно, убедитесь, что в целевом месте не существует файла с таким же именем.
Связанное чтение:
- Как найти и скопировать файлы определенного типа из одного каталога в другой в Linux
- Копирование определенных типов файлов с сохранением структуры каталогов в Linux
- Копирование файлов и одновременное создание целевых каталогов
- Как скопировать файлы и одновременно изменить владельца и разрешения
- Как сохранить право собственности и права доступа к файлам при копировании файлов или каталогов
- Возобновить частично переданные файлы через SSH с помощью Rsync
- Как быстро передавать большие файлы по сети в Linux и Unix
- Расширенное копирование: добавление индикатора выполнения к командам cp и mv в Linux
- Копировать содержимое файла в буфер обмена, не отображая его