Как использовать команду mv для перемещения только выбранных файлов? [дубликат]

Какая команда предназначена для перемещения всех файлов в целевой каталог, кроме *. Trg файлов?

Попытка выполнить следующую команду, но она не работает:

mv !(*.trg) tgtdir
7
задан 31 May 2016 в 05:37

2 ответа

Используйте find с отрицаемым -name аргумент:

find . ! -name '*.trg' ! -name . -maxdepth 1 -exec mv {} <tgtdir> \;

! -name . исключает текущий каталог, и -maxdepth 1 гарантирует только файлы, и каталоги в текущем будут в результатах поиска.

Точно так же, как с плоскостью mv, в зависимости от того, где Ваш tgtdir существует, Вы, возможно, должны были бы исключить его также.

5
ответ дан 31 May 2016 в 05:37

У Вас есть расширенный шаблон шарика, !(*.trg), который будет только работать, если extglob опция оболочки будет включена.

Как вывод shopt extglob шоу:

extglob off

Вам не включили опцию.

, Таким образом, необходимо включить extglob:

shopt -s extglob

Затем Ваша команда должна работать.

кроме того, Ваша команда может быть сделана более компактной:

mv -t tgtdir !(*.trg|tgtdir)
12
ответ дан 31 May 2016 в 05:37

Другие вопросы по тегам:

Похожие вопросы: