Я пытаюсь передать grep
вывод rm
, но он выводит бесполезные вещи. Требуется ли какой-либо переключатель для rm
? Или может rm
быть предоставлено регулярное выражение непосредственно?
ls | grep '^\[Daruchini'| rm
rm: отсутствует операнд Попробуйте `rm --help 'для получения дополнительной информации.
Ответы:
Вы должны использовать,
xargs
чтобы превратить стандартный ввод в аргументы дляrm
.(Остерегайтесь специальных символов в именах файлов; с GNU grep вы можете предпочесть
)
Кроме того, хотя оболочка не использует регулярные выражения, это простой шаблон:
(Между тем, я думаю, что мне нужно больше спать.)
источник
rm Dar*
, нетrm !(Dar*)
.zsh
^
режиме (похоже наbasg
!
вещь).| tr "\n" "\0"
прежде чемxargs
немного. Видел в этом посте: stackoverflow.com/questions/20307299/…Не анализируйте вывод
ls
.Здесь очень просто заставить оболочку фильтровать нужные вам файлы. Обратите внимание, что оболочка расширяет шаблон
Dar*
, а неrm
команда. Расширение шаблона, выполняемое оболочкой, называется globbing .В более сложных случаях ищите
find
команду.источник
Если вы хотите ограничить вывод
grep
символами новой строки, а не пробелами, вы можете указать это сxargs
помощью-d
опции.(как описано в этом вопросе)
источник
Для передачи вывода в качестве аргумента я склонен использовать цикл while, поскольку я не знаком с xargs.
источник
Лучшая команда для меня это:
источник