На этот вопрос уже есть ответ:
Какая команда предназначена для перемещения всех файлов в целевой каталог, кроме *. Trg
файлов?
Попытка выполнить следующую команду, но она не работает:
mv !(*.trg) tgtdir
Используйте find
с отрицаемым -name
аргумент:
find . ! -name '*.trg' ! -name . -maxdepth 1 -exec mv {} <tgtdir> \;
! -name .
исключает текущий каталог, и -maxdepth 1
гарантирует только файлы, и каталоги в текущем будут в результатах поиска.
Точно так же, как с плоскостью mv
, в зависимости от того, где Ваш tgtdir
существует, Вы, возможно, должны были бы исключить его также.
У Вас есть расширенный шаблон шарика, !(*.trg)
, который будет только работать, если extglob
опция оболочки будет включена.
Как вывод shopt extglob
шоу:
extglob off
Вам не включили опцию.
, Таким образом, необходимо включить extglob
:
shopt -s extglob
Затем Ваша команда должна работать.
кроме того, Ваша команда может быть сделана более компактной:
mv -t tgtdir !(*.trg|tgtdir)