Как скопировать каталог и подпапки, но игнорировать определенные файлы в подпапке?

Обычно, каждый был бы Ctrl+C на оболочке вызова / уничтожают процесс от родительского процесса путем отправки сигнала через Process.destroy() (Java).

Аккуратный инструмент для таких задач pkill, который может уничтожить процессы шаблоном, например.

pkill ping

Обратите внимание, что обычный пользователь не может уничтожить другого пользовательские процессы, поэтому удостоверьтесь, что Вы зарегистрированы на правильном компьютере с правильным идентификатором пользователя.

Бонусная подсказка: использовать pgrep -fl ping чтобы перечислить соответствие процессам, удостовериться, Вы хотите уничтожить всех их - потому что, работая как корень, pkill ssh также уничтожит Ваш sshd и может заблокировать Вас. Так же в особенности, когда выполнение как корень - которого необходимо избежать так или иначе - проверяет дважды с pgrep.

4
29.06.2015, 01:58
3 ответа

Вы можете сделать это с помощью find (1) и cpio (1) :

find /home -path './my-folder/test[34].txt' -prune -o \( -type f -print \) | \
    cpio -pdamv /some/other/dir
6
27.01.2020, 20:49

Как насчет

cp !(my-folder) /foo

Пример:

$ find . -type f
./my-folder/test4.txt
./my-folder/test3.txt
./test2.txt
./test1.txt
$ echo cp !(my-folder) /foo
cp test1.txt test2.txt /foo
$
-1
27.01.2020, 20:49

Вы не можете сделать это только с помощью cp , сокращая f, указывая файлы для копирования. Создание частичных копий выходит за рамки возможностей cp.

Rsync - очевидный инструмент для работы, и он очень широко распространен.

Если у вас есть только инструменты POSIX, вы можете использовать pax . Вы можете пропустить файлы, переписав их путь в пустую строку.

cd /home && pax -rw -pe -s'~^\./my-folder/test[34]\.txt$~~' . /path/to/destination

Если у вас есть только минимальный сервер Linux без pax, посмотрите, доступны ли его традиционные эквиваленты cpio или tar. См. ответ lcd047 для примера cpio. С помощью GNU tar вы можете сделать

mkdir /path/to/destination
tar c -C /home --exclude='./my-folder/test[34].txt' | tar x -C /path/to/destination
4
27.01.2020, 20:49

Теги

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