Как переместить файлы и каталоги, исключая один конкретный каталог, в этот каталог
3166 просмотра
3 ответа
внутри каталога
~/domains/annejulie.blue-world.pl/git
я хочу получить все файлы и каталоги, кроме каталога annejulie.blue-world.pl.git, и переместить их в этот каталог ( annejulie.blue-world.pl.git )
Как это сделать в терминале с помощью команды find и grep ? Является ли это возможным?
Автор: Bartłomiej Semańczyk Источник Размещён: 12.11.2019 09:40Ответы (3)
7 плюса
Сначала выполните следующую команду в терминале. Это расширяет регулярные выражения.
shopt -s extglob
Теперь вы можете выполнить следующую команду mv
mv !(<file/dir not to be moved>) <Path to dest>
Например, если вы находитесь в ~ / Test и вам нужно переместить все, кроме ~ / Test / Dest в ~ / Test / Dest, вы можете выполнить его, как указано ниже, при условии, что вы находитесь в ~ / Test
mv !(Dest) ~/Test/Dest
Автор: Seema Kadavan
Размещён: 26.12.2014 09:36
2 плюса
При find
условии, что ваша find
поддержка -mindepth
и -maxdepth
.
find . -mindepth 1 -maxdepth 1 \! -name annejulie.blue-world.pl.git -exec echo mv {} annejulie.blue-word.pl.git \;
Это не выполняет перемещение, а выводит на терминал, какие операции он будет выполнять. Удалите echo
после -exec
слова, если вы довольны результатом.
Если у вас есть, mv
который поддерживает эту -t
опцию, вы можете использовать это:
find . -mindepth 1 -maxdepth 1 \! -name annejulie.blue-world.pl.git -exec echo mv -t annejulie.blue-word.pl.git {} +
Если ваш find
не поддерживает -mindepth
и -maxdepth
, это POSIX-совместимый должен делать:
find \( \! -name '.' -type d -prune -o \! -type d \) \! -name annejulie.blue-world.pl.git -exec echo mv {} annejulie.blue-word.pl.git \;
это работает, но это действительно некрасиво.
Конечно, лучшим вариантом является использование
mv -- * annejulie.blue-world.pl.git
и позвольте mv
жаловаться, что он не может перейти в подкаталог сам по себе.
0 плюса
Вы можете использовать find
:
cd ~/domains/annejulie.blue-world.pl/git
find . -and -not -path './annejulie.blue-world.pl.git*' -exec mv {} ./annejulie.blue-world.pl.git \;
Автор: anubhava
Размещён: 26.12.2014 09:23
Вопросы из категории :
- bash Как разрешить символические ссылки в сценарии оболочки
- bash Удалить все, кроме самых последних файлов X в Bash
- bash Распараллелить скрипт Bash с максимальным количеством процессов
- bash Как мне написать цикл для Bash
- bash Как обнулить числа в именах файлов в Bash?
- bash Get the source directory of a Bash script from within the script itself
- terminal Звук Питона («Колокол»)
- terminal Как выделить и портировать вывод gdb во время интерактивной отладки?
- terminal Как скомпилировать и запустить C / C ++ в консоли Unix / Mac?
- terminal Как напечатать цветной текст в терминале в Python?
- terminal Терминал Mac OS X: опция карты + удалить для «обратного удаления слова»
- terminal Как установить мою оболочку по умолчанию на Mac?
- grep grep файл, но показать несколько окружающих строк?
- grep Какие хорошие инструменты grep для Windows?
- grep Используйте grep для поиска содержимого в файлах и перемещения их, если они совпадают
- grep Как искать многострочный шаблон в файле?
- grep Что такое makeinfo и как мне его получить?
- grep Используя sed, как вы печатаете первые 'N' символов строки?