С помощью zsh
:
mylist=(${(f)"$(
Он считывает строки из filelist
в массиве, а затем использует ] квалификаторы glob / e
строка для выбора / выбора только имен файлов, отсутствующих в массиве: .
выбирает только обычные файлы (добавьте D
, если ваш список содержит точечные файлы), а отрицательное ^ e_'expression '_
далее выбирает только те, для которых выражение возвращает false, т. Е. Если их имя ( $ REPLY
) не является элементом массива .
Если результат вас устраивает, замените print -rl
на rm
, чтобы удалить файлы:
rm -- *(.^e_'(($mylist[(Ie)$REPLY]))'_)
Чтобы выбрать и удалить файлы рекурсивно, используйте глобус * / **
с модификатором глобуса $ {REPLY: t}
:
rm -- */**(.^e_'(($mylist[(Ie)${REPLY:t}]))'_)
En lugar de ejecutar trans
, ejecute un shell secundario que ejecute trans
y luego espere hasta que presione Enter:
... $term -e sh -c 'trans "$(xclip -o)"; read junk'