Один из способов — расширить список файлов и передать его rm в качестве аргументов:
$ rm $(find. -iregex '.*.new.*' -regex '.*.pdf*')
**Это не удастся, если имена файлов содержат пробелы или новые строки.
Вы можете использовать xargs для создания команды rm, например:
$ find. … … | xargs rm
**Также не будет работать с новой строкой или пробелом
Или лучше попросите find
выполнить команду rm:
$ find. … … --exec rm {} \;
Но лучшее решение — использовать опцию удаления непосредственно в поиске:
$ find. -iregex '.*.new.*' -regex '.*.pdf*' -delete
Так как нужно звонить:
echo ".*"
чтобы не получить это расширение, вам, конечно, также нужно позвонить:
a=".*"
echo "$a"
Вы не делаете ничего плохого в назначении строки .*
переменной, но поскольку вы используете переменную без кавычек с echo
, оболочка выполнит (разбиение слов и )генерацию имени файла (подстановка )его значения перед вызовом echo
.
Чтобы предотвратить это, заключите раскрытие переменной в двойные кавычки:
echo "$a"
Связанные: