- Перенести файлы по маске linux
- Как перемещать файлы и каталоги в Linux (команда mv)
- Как использовать команду mv
- Перемещение нескольких файлов и каталогов
- Параметры команды mv
- Запрашивать перед перезаписью
- Принудительная перезапись
- Не перезаписывать существующие файлы
- Резервное копирование файлов
- Подробный вывод
- Выводы
- Рекурсивный mv с сохранением структуры каталогов возможен?
- Как переместить (переименовать) файл или папку в терминале Linux
- Команда mv
- Как переместить файл в терминале Linux
- Как переименовать файл в терминале Linux
Перенести файлы по маске linux
При выполнении операций копирования и перемещения (или переименования) файлов вы имеете возможность изменить имена копируемых или перемещаемых файлов. Для этого вы должны задать маску для имен файлов-источников и маску для имен файлов, которые будут созданы (файлы-приемники). Обычно эта вторая маска представляет собой несколько символов замены (wildcards) в конце строки, определяющей место назначение создаваемых файлов. Задание масок осуществляется в строках ввода, отображаемых в окне, появляющемся после обращения к командам копирования / переноса (рис. 6.6).
Все файлы, удовлетворяющие маске источника, будут переименованы (скопированы или перемещены с новыми именами) в соответствии с маской файла-приемника. Если имеются помеченные файлы, то копируются (перемещаются) только помеченные файлы, удовлетворяющие заданной маске для файлов-источников.
Рис. 6.6. Диалоговое окно для переименования файлов
Есть еще несколько опций, которые влияют на выполнение операций копирования/перемещения файлов, и которые устанавливаются в том же окне запроса, где задаются маски имен файлов, либо через команду меню Настройки | Конфигурация .
Опция Разименовывать ссылки (Follow links) определяет, будут ли при копировании жестких или символических ссылок в каталоге-приемнике (и рекурсивно в подкаталогах) создаваться такие же ссылки, или будут копироваться файлы (и подкаталоги), на которые эти ссылки указывают.
Опция Внутрь каталога, если есть (Dive into subdirs) определяет, что делать, если в каталоге-приемнике уже существует подкаталог, имя которого совпадает с именем файла (каталога), который копируется (источника). По умолчанию (опция отключена) содержимое каталога-источника копируется в каталог-приемник. Если опция включена, то в каталоге приемнике будет создан новый подкаталог с тем же именем, в который и будет осуществляться копирование.
Лучше показать это на примере. Пусть вы хотите скопировать содержимое каталога one в каталог /two/one, который уже существует. Обычно (опция отключена) mc будет просто копировать все файлы из one в /two/one. Если опцию включить, копирование файлов будет производиться в /two/one/one.
Опция Сохранять атрибуты (Preserve attributes) определяет, будут ли при копировании/перемещении сохранены атрибуты исходного файла: права доступа, временные метки и, если вы root, UID и GID исходного файла. Если опция отключена, атрибуты будут установлены в соответствии с текущим значением umask.
На процедуры копирования и перемещения файлов оказывает также влияние установка опции Образцы в стиле shell в меню Настройки / Конфигурация. Когда эта опция включена, вы можете использовать символы замены (wildcards) ‘*’ и ‘?’ в маске источника. Они обрабатываются аналогично тому, как это делается в shell. В маске приемника разрешается использовать только ‘*’ и ‘\ цифра > ‘. Первый символ ‘*’ в маске приемника соответствует первой группе символов замены в маске источника, второй символ ‘*’ соответствует второй группе и т. д. Аналогично, символ замены ‘\1’ соответствует первой группе символов замены в маске источника, символ ‘\2’ — второй группе и т. д. Символ ‘\0’ соответствует целому имени файла-источника. Приведем пару примеров.
Пример 1 . Если маска источника «*.tar.gz», а маска приемника — «/two/*.tgz», и имя копируемого файла — «foo.tar.gz», копия будет называться «foo.tgz» и будет находиться в каталоге «/two».
Пример 2. Предположим, вы хотите поменять местами имя и расширение файла, так чтобы «file.c» стал файлом «c.file». Маска источника для этого должна иметь вид «*.*», а маска приемника — «\2.\1».
Когда опция Образцы в стиле shell ( » Use shell patterns ” ) выключена, mc не осуществляет автоматической группировки. Для указания групп символов в маске источника, которые будут соответствовать символам замены в маске приемника, вы должны в этом случае использовать скобки ‘\(. \)’. Этот способ более гибкий, но требует больше усилий при вводе. Снова приведем два примера
Пример 3 . Если маска источника имеет вид «^\(.*\)\.tar\.gz$», копирование производится в «/two/*.tgz» и копируется файл «foo.tar.gz», то результатом будет «/two/foo.tgz».
Пример 4 . Предположим, что вы хотите поменять местами имя файла и его расширение, так чтобы имена вида «file.c» приняли вид «c.file».
Маска источника для этого — «^\(.*\)\.\(.*\)$», а маска приемника — «\2.\1».
При выполнении операций копирования/перемещения вы можете также преобразовать регистр символов в именах файлов. Если вы используете ‘\u’ или ‘\l’ в маске приемника, то следующий символ имени будет образован в верхнем (заглавные символы) или нижнем (строчные) регистре соответственно.
Если использовать в маске приемника ‘\U’ или ‘\L’, то к соответствующему регистру будут преобразованы все последующие символы, вплоть до следующего вхождения ‘\L’ или ‘\U’, или же до конца имени файла.
Применение ‘\u’ и ‘\l’ обеспечивает более широкие возможности, чем ‘\U’ и ‘\L’.
Например, если маска источника есть ‘*’ (опция Образцы в стиле shell включена) или ‘^\(.*\)$’ (опция Образцы в стиле shell выключена), а маска приемника есть ‘\L\u*’, имена файлов будут преобразованы таким образом, что первые буквы имени будут заглавными, а все остальные — строчными.
Символ ‘\’ в масках используется для отмены специальной интерпретации отдельных символов. Например, ‘\\’ означает просто обратный слэш (как литерал) и ‘\*’ означает просто звездочку (asterisk).
Источник
Как перемещать файлы и каталоги в Linux (команда mv)
Перемещение файлов и каталогов — одна из самых основных задач, которые вам часто приходится выполнять в системе Linux.
В этом руководстве мы объясним, как использовать команду mv для перемещения файлов и каталогов.
Как использовать команду mv
Команда mv (сокращение от move) используется для переименования и перемещения файлов и каталогов из одного места в другое. Синтаксис команды mv следующий:
SOURCE может быть одним или несколькими файлами или каталогами, а DESTINATION может быть одним файлом или каталогом.
- Когда в качестве SOURCE задано несколько файлов или каталогов, DESTINATION должен быть каталогом. В этом случае файлы SOURCE перемещаются в целевой каталог.
- Если вы укажете один файл как SOURCE , а целью DESTINATION является существующий каталог, то файл будет перемещен в указанный каталог.
- Если вы укажете один файл в качестве SOURCE и один файл в качестве цели DESTINATION вы переименуете файл .
- Если SOURCE является каталогом, а DESTINATION не существует, SOURCE будет переименован в DESTINATION . В противном случае, если DESTINATION существует, он будет перемещен в каталог DESTINATION .
Чтобы переместить файл или каталог, вам необходимо иметь права на запись как в SOURCE и в DESTINATION . В противном случае вы получите сообщение об ошибке в разрешении отказано.
Например, чтобы переместить файл file1 из текущего рабочего каталога в каталог /tmp вы должны запустить:
Чтобы переименовать файл, вам необходимо указать имя файла назначения:
Синтаксис перемещения каталогов такой же, как и при перемещении файлов. В следующем примере, если каталог dir2 существует, команда переместит dir1 внутрь dir2 . Если dir2 не существует, dir1 будет переименован в dir2 :
Перемещение нескольких файлов и каталогов
Чтобы переместить несколько файлов и каталогов, укажите файлы, которые вы хотите переместить, в качестве источника. Например, чтобы переместить файлы file1 и file2 в каталог dir1 , введите:
Команда mv также позволяет использовать сопоставление с образцом. Например, чтобы переместить все файлы pdf из текущего каталога в каталог
/Documents , вы должны использовать:
Параметры команды mv
Команда mv принимает несколько параметров, которые влияют на поведение команды по умолчанию.
В некоторых дистрибутивах Linux mv может быть псевдонимом команды mv с настраиваемым набором параметров. Например, в CentOS mv — это псевдоним mv -i . Вы можете узнать, является ли mv псевдонимом, используя команду type :
Если mv является псевдонимом, вывод будет выглядеть примерно так:
Если указаны конфликтующие варианты, последний имеет приоритет.
Запрашивать перед перезаписью
По умолчанию, если целевой файл существует, он будет перезаписан. Чтобы запросить подтверждение, используйте параметр -i :
Чтобы перезаписать файл типа y или Y
Принудительная перезапись
Если вы попытаетесь перезаписать файл, доступный только для чтения, команда mv спросит вас, хотите ли вы перезаписать файл:
Чтобы не получать подсказки, используйте параметры -f :
Эта опция особенно полезна, когда вам нужно перезаписать несколько файлов, доступных только для чтения.
Не перезаписывать существующие файлы
Параметр -n указывает mv никогда не перезаписывать существующие файлы:
Если существует file1 приведенная выше команда ничего не сделает. В противном случае он переместит файл в каталог /tmp .
Резервное копирование файлов
Если целевой файл существует, вы можете создать его резервную копию, используя параметр -b :
Файл резервной копии будет иметь то же имя, что и исходный файл, с добавленной к нему тильдой (
Используйте команду ls, чтобы убедиться, что резервная копия была создана:
Подробный вывод
Другой вариант, который может быть полезен, — это -v . Когда используется эта опция, команда печатает имя каждого перемещенного файла:
Выводы
Команда mv используется для перемещения и переименования файлов и каталогов.
Для получения дополнительных сведений о команде mv страницу руководства или введите в терминале man mv .
Новые пользователи Linux, которых пугает командная строка, могут использовать файловый менеджер с графическим интерфейсом для перемещения своих файлов.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Рекурсивный mv с сохранением структуры каталогов возможен?
Приветствую, о глубокоуважаемый Олл!
Предистория: битые mp3 в коллекции. mp3diags отказался править — при запуске видит файлы, но на запуск диагностики/починки отвечал что не видит файла. Следующим инструментом стал mp3val и строчкой:
#find -name *mp3 -type f -exec mp3val -f ‘<>‘ \;
Были исправлены mp3 а старые заботливо переименованы в *.bak
Встала задча: все *bak из дерева перенести в дерево С сохранением структуры.
Гугль решить эту задачу не помог. Из всего что нашел только вриант копирования с помощью команды cp с опцией —parents и удаление запуком потом rm вместо cp, но для 50Gb файлов на zfs это грустное зрелище.
Есть в linux инструментарий позволяющий переместить файлы по маске из дерева кталогов в новое дерево с сохранением структуры и прав/аттрибутов файлов/каталогов? Интересует именно перенос а не копирование/удаление. Зачем ворочать 50G файлов если можно просто сменить имя.
rsync -a —remove-source-files —exclude ‘*.mp3’
UPD: Хотя нет, он же будет копировать, а потом удалять. Ну можно набросать однострочник.
Если создание удаление не устраивает в виду времени выполнения, может попробовать через хардлинки? find bla bla bla exec прокатит?
UPD: Хотя нет, он же будет копировать, а потом удалять
Источник
Как переместить (переименовать) файл или папку в терминале Linux
При работе с Linux через терминал часто приходится выполнять различные операции с файлами. Например, редактировать конфигурационные файлы, скачивать архивы, делать резервные копии и т. д.
В данной статье мы рассмотрим операции перемещения и переименования файлов. Здесь вы узнаете, как перемещать и переименовывать файлы через терминал Linux. Материал будет актуален для любого дистрибутива Linux, например, Ubuntu, Debian или CentOS.
Команда mv
Для перемещения и переименования файлов в Linux используется команда mv . Это служебная программа для командной строки, которая позволяет перемещать или переименовывать файлы и папки.
Синтаксис команды mv выглядит следующим образом:
Основные опции для данной команды:
-f | Перезапись без подтверждения пользователя. Данная опция отменяет действие опций -i или -n. |
-i | Интерактивный режим работы. При перезаписи программа будет выдавать запрос на подтверждения пользователя. |
-n | Запрет перезаписи. Данная опция отменяет действие опций -f или -i. |
-v | Вывод подробной информации. |
Обратите внимание, по умолчанию команда mv перезаписывает существующие файлы новыми. Чтобы этого избежать используйте опцию -i или -n .
Как переместить файл в терминале Linux
Для того чтобы переместить файл в другой каталог при помощи команды mv достаточно ввести данную команду, указать файл и его новое место расположения. Например, для того чтобы переместить файл « file.txt » во вложенную папку « temp » нужно выполнить:
При необходимости можно переместить сразу несколько файлов. Для этого нужно перечислить файлы и в конце указать новое место назначение. Например, для того чтобы переместить « file.csv » и « file.txt » в папку « temp » нужно выполнить:
Также для перемещения нескольких файлов можно использовать маску. Например, для того чтобы переместить все файлы с расширением txt нужно выполнить следующее:
Аналогичным способом можно перемещать и папки, как пустые, так и с файлами и вложенными папками. Например, для того чтобы переместить папку « test » в папку « temp » нужно выполнить:
При перемещении файлов или папок можно сразу указать для них и новое имя. Например, для того чтобы переместить « file.txt » в папку « temp » и переименовать его в « old_file.txt » нужно выполнить:
Как переименовать файл в терминале Linux
Также команду mv можно использовать для переименования файлов или папок без изменения места их расположения. Для этого достаточно ввести команду mv , указать файл или папку, а также новое название. Например, для того чтобы переименовать папку « temp » в « trash » нужно выполнить:
Обратите внимание, если бы папка « trash » существовала, то данная команда выполнила бы перемещение папки « temp » внутрь папки « trash ».
Источник