Как переместить все файлы в другую папку кроме папки с помощью терминала?
У меня в папке Videos есть много видео по тематике фильтры.
Я чтобы немного навести порядок создал папку filters в папке Videos куда хочу переместить все видео по данной тематике.
Так я не могу написать:
mv /home/user/Videos/* /home/user/Videos/filters
Потому что будет тогда копироваться папка filters которая есть в Videos в саму себя.
- Вопрос задан более двух лет назад
- 755 просмотров
3 комментария
Простой 3 комментария

Нужно ли искать замысловатые решения? 1. переименуйте папку filters в какую-нибудь philters или filteeeeers;
2. перенесите файлы;
3. переименуйте папку обратно.
nathan111777 @nathan111777 Автор вопроса
hint000, Вы не поняли) Проблема в том что если написать только * то скопируются не только файлы в папку filters но и сама папка filters. Тоесть папка home/user/Videos/filters в папку home/user/Videos/filters . Что невозможно.

nathan111777, Ok, почему-то подумал, что перемещаете файлы по маске filters*.
Ну суть от этого мало меняется:
1. перенесите папку filters из /home/user/Videos/ в /home/user/
2. mv /home/user/Videos/* /home/user/filters
3. перенесите папку filters обратно в /home/user/Videos/
Решения вопроса 1

Ну если тебе нужно перенести только файлы, но не трогать другие каталоги, то тогда можно попробовать
mv /home/user/Videos/*.* /home/user/Videos/filters
Так как у файлов обычно есть расширения.
Ответ написан более двух лет назад
Нравится 3 2 комментария
если в имени папки будет точка, то она тоже переместится.
если в имение файла не будет точек, то он не переместится.
🙂 но в принципе согласен, костыль но работать думаю будет.
правильное решение через find
хотя я бы воспользовался каким-либо файловым менеджером.
nathan111777 @nathan111777 Автор вопроса
Ответы на вопрос 2
Всё проще! Не надо создавать проблем где их нет.
Указанной командой всё перенесётся как надо, mv только ругнётся:
mv: невозможно перенести 'videos' в свой собственный подкаталог, 'videos/videos'
Остальное будет перенесено в указанный каталог videos.
Ну, в Вашем варианте, filters. Только что создал для пробы, проверил.
Для теста сделайте отдельный каталог и в нём аналогично файлов-каталогов накидать можно. Ну и в нём же проверить. Мало ли, как у Вас в убунте настроено чего.
Ответ написан более двух лет назад
Комментировать
Нравится 2 Комментировать

хорошо есть и хорошо весьма
$ cd $HOME/Videos $ mv !(filters) filters
если не сработает значит нужно включить расширение регулярных выражений
$ shopt -s extglob
включено или нет можно глянуть командой
$ shopt . extglob on .
Форум русскоязычного сообщества Ubuntu
Страница сгенерирована за 0.046 секунд. Запросов: 23.
- Сайт
- Об Ubuntu
- Скачать Ubuntu
- Семейство Ubuntu
- Новости
- Форум
- Помощь
- Правила
- Документация
- Пользовательская документация
- Официальная документация
- Семейство Ubuntu
- Материалы для загрузки
- Совместимость с оборудованием
- RSS лента
- Сообщество
- Наши проекты
- Местные сообщества
- Перевод Ubuntu
- Тестирование
- RSS лента
© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.
Как скопировать содержимое каталога в другой каталог?
Команду то я нашёл. Но мне не понятно откуда взялся синтаксис /. ? Это что то вроде регулярного выражения? В мануале информации нет. Спасибо.
Отслеживать
задан 25 ноя 2017 в 9:41
user208916 user208916
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Каждый каталог содержит в себе два обязательных элемента:
- псевдокаталог .. , обозначающий каталог выше по дереву директорий (даже в / есть /.. , но обозначает всё так же / )
- псевдокаталог . , обозначающий самого себя. Например, используется в командах для обозначения пути от текущего каталога: ./configure вызывающий скрипт configure в текущей директории.
Таким образом, в команде cp -r dir1/. dir2 аргумент dir/. является просто необычной записью cp -r dir1 dir2 . Можно писать и как-то экзотично:
cp -r dir1/././../dir1/./ dir2
Однако поведение cp неожиданно отличается в случае если dir2 уже существует, а не будет создан командой cp .
cp -r dir1 dir2 # и аналогично cp -r dir1/ dir2
Для существующего dir2 создаст копию директории dir1 в dir2/dir1 вместо копирования содержимого dir1 в dir2 .
cp -r dir1/. dir2
Именно будет копировать содержимое dir1 в dir2 .
Это неочевидная особенность реализации именно cp . Например, rsync такими странными вещами не занимается и следующие записи эквивалентны:
rsync -a dir1 dir2/ rsync -a dir1/. dir2/
(но rsync при этом будет различаться поведением для записи dir2/ и dir2 для существующей директории, лучше указывать как подсказывает автокомплит, оканчивая путь / )
Копирование, перемещение, создание и удаление файлов и каталогов
Частыми операциями в файловой структуре являются создание файлов и каталогов, их копирование, перемещение, переименование, а также удаление. Очевидно для подобных действий в командной оболочке Linux должны быть предусмотрены специальные команды.
Копирование файлов и каталогов
В Bash для копирования файлов используется команда cp (от «copy»), которой обычно передаются два аргумента:
- адрес с именем исходного файла,
- новый адрес с именем или просто адрес каталога, куда помещается копия.
Адрес может быть как абсолютным, так относительным. Если операции с файлами выполняются в текущем каталоге, то указывать адрес смысла нет. Пишется только имя исходного файла и имя копии. Поскольку файлов с одинаковыми именами и адресами быть не может, имя копии должно отличаться от имени исходного файла.
cp readme readme2
В данном случае создается копия файла readme , которая остается в той же директории под именем readme2 .
cp readme Desktop/
В папку Desktop копируется файл readme . Здесь текущим является родительский Desktop’у каталог. Имена копии и файла оригинала будут совпадать, а вот полные адреса – нет.
cp /home/irina/tux.png /mnt/D/pingvin.png
Здесь копируется файл из одного каталога в другой, используются абсолютные адреса, имя копии изменяется.
Если надо скопировать несколько разных файлов в один и тот же каталог, то после команды cp сначала перечисляются все файлы-оригиналы, а последним указывается каталог, куда помещаются копии. Понятно, что при таком групповом действии имена файлов изменить не удастся.
Чтобы скопировать каталог со всем его содержимым, необходимо использовать ключ -r команды cp :
cp -r ./letters ./oldletters
Перемещение и переименование
В Bash-оболочке Linux для перемещения и переименования используется одна и та же команда – mv (от «move» – перемещать). Переименование можно рассматривать как частный случай перемещения, ведь по-сути изменяется полный адрес файла, что равносильно перемещению, даже если файл остается в том же каталоге.
Также как в случае cp , для mv необходимо указать пару аргументов. Выбор между перемещением и переименованием зависит от того, что это за аргументы. При перемещении файл меняет свой адрес, следовательно, если в первом и втором аргументах указаны разные адреса, то произойдет перемещение. Если адреса одинаковые, а различаются только имена, происходит переименование. Кроме того, перемещение может быть совмещено с переименованием.
В случае перемещения без переименования во втором аргументе указывается только каталог места назначения.
mv document.txt Work
mv document.txt Work/doc23.txt
Здесь в первом случае файл document.txt перемещается в каталог Work . Во-втором случае одновременно происходит перемещение файла и его переименование: document.txt перемещается в директорию Work и получает новое имя doc23.txt .
При использовании команды mv для переименования в качестве второго аргумента указывается новое имя:
mv order.txt orderNew.txt
mv Work/list.odt Work/names.odt
Каталоги перемещаются и переименовываются по тому же принципу, что и файлы (в отличие от cp ключ -r здесь не нужен).
Групповое перемещение файлов работает также, как с командой cp : сначала указываются перемещаемые объекты, в конце каталог назначения.
Создание файлов и каталогов
Новые директории создаются командой mkdir. Например, чтобы создать каталог Work в текущей директории необходимо выполнить следующую команду:
mkdir Work
или
mkdir ./Work
Существует множество способов создания файлов, обычно они создаются какой-либо программой. Если все же возникает необходимость создать пустой файл, сделать это можно с помощью программы touch . В качестве аргумента ей передается имя создаваемого файла. Еще один способ – перенаправление вывода какой-либо команды в файл. Пример:
Здесь программа cal выводит календарь на текущий месяц, а поскольку стоит знак перенаправления вывода, то вывод команды будет записан в файл January , находящийся в папке Work .
Удаление файлов и каталогов
Для удаления файлов используется команда rm. Например:
Командой rmdir можно удалить пустой каталог. Если же каталог не пуст, следует использовать команду rm с ключом -r :

Вопросы
У вас в каталоге есть файлы с разными расширениями. Вам надо группу файлов, имеющих одно и тоже расширение, скопировать в другой каталог. Как это сделать одной командой?
Какой ключ надо использовать, чтобы при перемещении случайно не перезаписать уже имеющийся в каталоге файл с таким именем?
Курс с ответами к заданиям и дополнительными уроками в PDF
X Скрыть Наверх
Введение в Linux и Bash. Курс