Командная строка Linux. Переместите все файлы и каталоги в каталоге, кроме некоторых файлов и каталогов

Я предлагаю использовать OMD (Открытое Контрольное Распределение) для контроля компьютеров. OMD может быть установлен очень легко, и это очень мощно. Кроме того, системные требования на Ваших контролируемых компьютерах являются очень низкими. Проверьте его на mathias-kettner.de.

По крайней мере, необходимо взглянуть на графики данных о производительности.

Кавычка от OMD-Wiki:

OMD в настоящее время идет со следующим программным обеспечением:

  • nagios
    • nagios-плагины
    • nsca
    • check_nrpe
  • Icinga
  • Shinken
  • nagvis
  • pnp4nagios
  • rrdtool/rrdcached
  • Check_MK
  • МК Livestatus
  • Многоузловой
  • dokuwiki

7
09.09.2014, 12:24
7 ответов

С ZSH :

setopt extendedglob # best in ~/.zshrc
mv A/^(file|directory)(|2)(D) B/

( (D) (D) , включающие dot (скрытые) файлы).

с Bash :

shopt -s extglob dotglob failglob
mv A/!(@(file|directory)?(2)) B/

с ksh93

(FIGNORE='@(.|..|@(file|directory)?(2))'; mv A/* B)
10
27.01.2020, 20:13

то, что я обычно делаю

cd A
ls > a

(предполагая, что у вас нет файла "a").

vi a

удаляет любой файл или каталог, который должен быть сохранен.

mv $(<a) B
10
27.01.2020, 20:13

Вы можете использовать найти с исключенными выражениями:

find . ! -name . -prune ! -path ./file \
                        ! -path ./file2 \
                        ! -path ./directory \
                        ! -path ./directory2 \
     -exec mv {} your_destination \;

Это решение вдохновлено этим вопросом .

5
27.01.2020, 20:13
ls | egrep -v '(file|file2|directory|directory2)' | xargs -i mv {} ../B/
.
2
27.01.2020, 20:13

$ sudo mv (имя исходной папки) A B (имя целевой папки)

пример: создать пустой каталог в какую-то подпапку 1) sudo mkdir -p A / {b / {a, b, c}, c, d}

2) ls A /

bcd

3) sudo mkdir B

5) sudo mv a (папка) b (папка)

0
27.01.2020, 20:13

Вы можете использовать массив bash, чтобы сохранить, какие из них вы хотите пропустить, а затем использовать функцию containsElement , продемонстрированную здесь :

$ skiplist=(file file2 directory directory2)
$ for f in *; do if containsElement "$f" "${skiplist[@]}"; then continue; fi;
mv -v "$f" B; done
0
27.01.2020, 20:13

Если ./A и ./B находятся в одной и той же файловой системе и , если эти файлы еще не существуют в ./B:

file file2 directory directory2

. ...то эта операция должна быть просто атомарной:

cd ./A; mv * ../B
for mv in file file2 directory directory2
do mv ../B/"$mv" .
done

Если их нет, то существует как минимум 8 дополнительных копий перекрестных устройств, выполненных с помощью приведенного выше набора команд.

1
27.01.2020, 20:13

Теги

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