Xargs `-J` Option

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

    ps -ef | grep [s]shd
3
29.11.2017, 05:13
1 ответ

Я не уверен, что это то, что вы ожидали, но в мире BSD (, таких как macOS)-Iи -J, различается способ передачи нескольких «строк» ​​в команду. Пример:

$ ls
file1 file2 file3

$ find. -type f -print0 | xargs -I % rm %
rm file1
rm file2
rm file3

$ find. -type f -print0 | xargs -J % rm %
rm file1 file2 file3

Таким образом, с -Ixargs будет запускать команду для каждого переданного ему элемента отдельно. С -Jxargs выполнит команду один раз, объединит все элементы и передаст их как аргументы вместе.

Некоторые команды, такие как rmили mkdir, могут принимать несколько аргументов и работать с ними так же, как если бы вы передали один аргумент и выполнили их несколько раз. Но некоторые приложения могут меняться в зависимости от того, как вы передаете им аргументы. Например tar. Вы можете создать tar-файл, а затем добавить в него файлы, или вы можете создать tar-файл, добавив в него все файлы за один раз.

$ find. -iname "*.txt" -or -iname "*.pdf" -print0 | xargs -0 -J % tar cjvf documents.tar.bz2 %
5
27.01.2020, 21:18

Теги

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