- How can I move files by type recursively from a directory and its sub-directories to another directory?
- 4 Answers 4
- You must log in to answer this question.
- Linked
- Related
- Hot Network Questions
- Subscribe to RSS
- Команды Linux для работы с файлами
- 1. ls — просмотр содержимого папки
- 2. cd — изменить папку
- 3. rm — удалить файлы
- 4. rmdir — удалить папку
- 5. mv — перемещение файлов
- 6. cp — копирование файлов
- 7. mkdir — создать папку
- 8. ln — создание ссылок
- 9. chmod — изменить права
- 10. touch — создать файл
- 11. mc
- Выводы
- Рекурсивное перемещение файлов и папок в Linux
- 5 ответов
- Ваш ответ
- Опубликуйте как Гость или авторизуйтесь
- Похожие вопросы про тегам:
How can I move files by type recursively from a directory and its sub-directories to another directory?
What would be a good way to move a file type from a directory and all of its sub-directories? Like «move all *.ogg in /thisdir recursively to /somedir». I tried a couple of things; my best effort was (still not that great):
find /thisdir -type f -name '*.ogg' -exec mv /somedir <> \;
mv: cannot overwrite non-directory `/thisdir/*.ogg' with directory `/somedir'
4 Answers 4
you can use find with xargs for this
find /thisdir -type f -name «*.ogg» -print0 | xargs -0 -Imysongs mv -i mysongs /somedir
The -I in the above command tells xargs what replacement string you want to use (otherwise it adds the arguments to the end of the command).
OR
In your command just try to move ‘<>‘ after mv command.
find /thisdir -type f -name ‘*.ogg’ -exec mv -i <> /somedir \;
Btw, for the first -print0 for find and -0 for xargs should be used as possible, to avoid whitespace in filename problems.
I strongly suggest using mv -i here, so you don’t risk overwriting files if something unexpected happens.
In zsh or bash 4, to gather all *.ogg files into /somedir :
If you wanted to reproduce the directory hierarchy: (warning, typed directly into the browser)
rsync -a --prune-empty-dirs --include='*/' --include='*.ogg' --exclude='*' /thisdir /somedir
find /thisdir -type f -name "*.ogg" -exec mv <> /somedir \;
You kinda interchanged the arguments for mv
i got «directory not empty» error. to fix this i run:
find . -name 'node_modules' -type d -prune -exec mkdir -p ./another/dir/<> \; -exec mv -i <> ./NODE_MODULES/<> \;
this will keep the directory structure.
You must log in to answer this question.
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.7.12.43529
Linux is a registered trademark of Linus Torvalds. UNIX is a registered trademark of The Open Group.
This site is not affiliated with Linus Torvalds or The Open Group in any way.
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Команды Linux для работы с файлами
Чтобы быть профессионалом в использовании терминала Linux, нужно научится управлять файлами через терминал. Это чуть ли не основа всего, включая редактирование конфигурационных файлов, сборку программ, администрирование и множество других вещей. Просмотр содержимого папок, переход между папками, создание и удаление файлов — это необходимая база, для удобной работы в терминале.
В этой статье мы рассмотрим самые часто используемые команды Linux для работы с файлами и каталогами, после их освоения терминал больше не будет казаться таким непонятным и объемлемым. Вот какие команды будут нас сегодня интересовать:
- ls — список файлов в директории;
- cd — переход между директориями;
- rm — удалить файл;
- rmdir — удалить папку;
- mv — переместить файл;
- cp — скопировать файл;
- mkdir — создать папку;
- ln — создать ссылку;
- chmod — изменить права файла;
- touch — создать пустой файл.
А теперь перейдем к подробному рассмотрению всех этих команд.
1. ls — просмотр содержимого папки
Команда ls позволяет вывести список файлов заданной папки, по умолчанию, будет выведен список файлов текущей папки:
Вы можете вывести список файлов из всех подкаталогов рекурсивно, для этого используйте опцию -R:
Чтобы вывести список файлов нужной папки, вы можете передать ее адрес утилите, например, /home:
Чтобы получить больше информации и вывести все имена файлов в виде списка используйте опцию -l:
2. cd — изменить папку
Команда cd позволяет изменить текущую папку на другую. По умолчанию, текущей считается домашняя папка, например, cd Desktop меняет папку на рабочий стол, если вы выполните ее из домашнего каталога:
Вы также можете указать полный путь к папке:
Команда cd .. переходит в папку, которая находится выше на одну в файловой системе:
Вы также можете вернуться в предыдущую рабочую папку:
3. rm — удалить файлы
Команда rm позволяет удалить файл. Будьте очень осторожны с ней, она не будет спрашивать подтверждения:
Например, rm file удалит файл с именем file, который находится в текущей папке. Как и в предыдущих вариантах, вы можете указать полный путь к файлу linux. Например:
Если вы хотите удалить папку, то нужно использовать опцию -r. Она включает рекурсивное удаление всех файлов и папок на всех уровнях вложенности:
Будьте осторожны, потому что эта команда удаляет файлы безвозвратно.
4. rmdir — удалить папку
Команда rmdir позволяет удалить пустую папку. Например, команда rmdir directory удалит папку directory, которая находится в текущей папке:
Если вам нужно удалить папку с файлами, то нужно использовать утилиту rm вместе с опцией -r.
5. mv — перемещение файлов
Команда mv перемещает файл в новое место. Она также может использоваться для переименования файлов. Например, mv file newfile переименует файл file в newfile:
Чтобы переместить файл в другую папку нужно указать путь к ней, например, переместим файл file в папку /home/user/tmp/
6. cp — копирование файлов
Эта cp и mv — это похожие команды linux для работы с файлами. Они работают аналогичным образом, только исходный файл остается на своем месте.
Вы также можете рекурсивно скопировать всю папку с помощью команды cp -r. Эта команда скопирует всю папку вместе со всеми файлами и вложенными папками в новое место. Например, скопируем папку /etc/:
7. mkdir — создать папку
Команда mkdir позволяет создать новую папку mkdir test создаст папку в текущем каталоге:
Если нужно создать папку в другом каталоге, укажите полный путь к нему:
8. ln — создание ссылок
Утилита ln позволяет создавать жесткие и символические ссылки на файлы или папки. Для создания символической ссылки используется опция -s. Например, вы создадим ссылку на папку с загрузками:
ln -s /home/user/Downloads/ /home/user/test/
Для создания жесткой ссылки никаких опций задавать не нужно:
ln /home/user/Downloads/ /home/user/test/
9. chmod — изменить права
chmod позволяет изменить права доступа к файлам. Например, chmod +x script.sh добавляет флаг исполняемости к файлу script.sh:
Чтобы убрать флаг исполняемый используйте опцию -x:
Подробнее о том, как работают разрешения для файлов смотрите в статье права доступа к файлам в Linux.
10. touch — создать файл
Команда touch создает пустой файл. Например, touch file создаст пустой файл в текущей папке с именем file:
Для создания файлов через терминал существует еще несколько команд, они рассмотрены в статье как создать файл в linux.
11. mc
Работа с файлами Linux через терминал может выполняться не только с помощью обычных консольных команд, каждая из которых выполняет только определенное действие. Вы можете использовать полнофункциональный файловый менеджер с псевдографическим интерфейсом на основе ncurses. Midnight Commander — это файловый менеджер, который можно использовать прямо в терминале. Для установки mc в Ubuntu выполните:
После завершения установки достаточно выполнить команду mc:
Используйте клавиши со стрелками для перемещения по файлах, Tab для перехода на другую панель, Alt+1 для просмотра справки и Alt+2 для вывода меню:
Если терминальное окружение поддерживает мышь, то вы можете ее использовать в Midnight Commander.
Выводы
В этой статье мы рассмотрели как выполняется работа с файлами и каталогами в linux, с помощью терминала. Когда вы освоите все эти команды, вы сможете сделать большинство основных действий в терминале. А как часто вы пользуетесь терминалом? Используете его для работы с файлами? Напишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Рекурсивное перемещение файлов и папок в Linux
как переместить содержимое /public-back/templates рекурсивно с разрешениями в /public/templates ?
29.12.2022 12:35 3525
5 ответов
Если я неправильно вопрос, это будет работать:
mv /public-back/templates/* /public/templates
кроме того, если у вас есть огромный список файлов, добавив -i спросит, прежде чем перезаписывать что-либо, что добавляет некоторую безопасность при использовании подстановочных знаков, таких как * .
страница man для cp гласит:
-p same as --preserve=mode,ownership,timestamps -r same as --recursive=copy directories recursively
cp -rp /public-back/templates/* /public/templates/
при перемещении элементов с флэш-накопителя в систему OSMC я обнаружил следующее очень полезным:
find /media/Pi\ Hard\ 16GB/ -name '*' -exec mv -v <> /media/External\ HDD/Videos/ \;
объяснение о том, как это работает ниже.
кстати, не забудьте добавить обратную косую черту перед пробелами в именах исходных или целевых каталогов (см. выше).
find finds all files and folders in the destination path. /media/Pi Hard 16GB/ is the path searched. Escape special char such as spaces. -name '*' filters on names. If you do not escape or quote this then the shell will expand it before find sees it. -exec Executes a command, in our case mv -v Verbose, so you can see what's happening (optional) <> is replaced by the name of the found object.
фактически, вы находите все файлы и все папки и перемещаете их по одному (или, если каталог будет найден первым, вы перемещаете этот каталог и содержимое в нем). Это запускает новый процесс для каждого хода и очень неэффективно. Используйте его только в случае сбоя обычных команд.
МВ не для этого. Но вы можете использовать этот маленький трюк, работает как шарм:
tar cf - . |(cd /targetdir; tar xvf -)
и сохраняет разрешения и все.
Примечание: ни один из выше работал для меня, поэтому это временное решение.
cp -a --link ../public-back/* /public/. && rm -rf ../public-back
Так что создание жестких ссылок на каталог и удалить источник реж. ‘mv’ просто не будет работать в вашем случае, и вообще работает только тогда, когда source dir и dest не имеют общих поддеревьев.
обратите внимание, что я предполагаю, что слово «переместить» в вопросе означает, что исходный каталог должен исчезнуть после операции.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]
Ваш ответ
Опубликуйте как Гость или авторизуйтесь
Похожие вопросы про тегам:
- 7 Какое максимальное количество разделов можно создать на жестком диске?
- 3 Таблица прилипает к верхней части страницы, как ее удалить?
- 6 При двусторонней печати как исправить, что задняя страница печатается вверх ногами?
- 4 Как превратить оглавление в простой форматированный текст?
- 5 Что значит 1Rx8 и 2Rx8 для оперативной памяти и совместимы ли они?
- 10 Копирование и вставка в Windows PowerShell
- 13 Сочетание клавиш для сворачивания удаленного рабочего стола
- 1 Как включить фон рабочего стола на удаленном компьютере?
- 5 Как сделать ярлык на рабочем столе доступным для всех пользователей в Windows 10
- 1 Зачем Windows 10 нужна служба очереди сообщений и почему она установлена по умолчанию?
- Наушники Wireless и True Wireless: чем они отличаются?
- Не включается iPad: причины и решения проблемы
- Как ускорить передачу данных по Bluetooth
- Как правильно приобрести подержанный iPhone?
- Каковы преимущества фотоэлектрической системы?
- 5 лучших USB–пылесосов для клавиатуры
- Как выбрать чехол-аккумулятор для смартфона
- Мобильный телефон Razr: новая складная раскладушка от Motorola стоит 1200 евро
- Компания Nothing: смартфон Phone 2 должен быть «более премиальным» и выйти в этом году
- UMTS — История технологии сотовой связи
- Выбор домена
- 3D-печать: будущее массового производства
- Искусственный интеллект в малом бизнесе: как улучшить эффективность и конкурентоспособность
- Ошибки, которых стоит избегать при продвижении сайта
- Высокие технологии в Windows: что это такое и как их использовать в своих приложениях
- Сдать квартиру в Москве безопасно и выгодно − это вполне реально
- Зарабатывай на ненужных скинах CS:GO
Apple | $173,24 | +0,81% | |
Amazon | $114,49 | -1,94% | |
Microsoft | $325,19 | +3,61% | |
$123,44 | +2,11% | ||
Netflix | $364,74 | -0,03% | |
Intel | $27,45 | -5,34% | |
$254,49 | +2,11% | ||
Tesla | $185,54 | +1,44% | |
Tencent | $322,40 | -3,01% |
Все дело в мыслях. Мысль — начало всего. И мыслями можно управлять. И поэтому главное дело совершенствования: работать над мыслями.