Как присвоить .* переменной в bash

Один из способов — расширить список файлов и передать его rm в качестве аргументов:

$ rm $(find. -iregex '.*.new.*' -regex '.*.pdf*')

**Это не удастся, если имена файлов содержат пробелы или новые строки.

Вы можете использовать xargs для создания команды rm, например:

$ find. … … | xargs rm

**Также не будет работать с новой строкой или пробелом

Или лучше попросите findвыполнить команду rm:

$ find. … … --exec rm {} \;

Но лучшее решение — использовать опцию удаления непосредственно в поиске:

$ find. -iregex '.*.new.*' -regex '.*.pdf*' -delete
0
10.08.2018, 16:28
2 ответа

Так как нужно звонить:

echo ".*"

чтобы не получить это расширение, вам, конечно, также нужно позвонить:

a=".*"
echo "$a"
6
28.01.2020, 02:13

Вы не делаете ничего плохого в назначении строки .*переменной, но поскольку вы используете переменную без кавычек с echo, оболочка выполнит (разбиение слов и )генерацию имени файла (подстановка )его значения перед вызовом echo.

Чтобы предотвратить это, заключите раскрытие переменной в двойные кавычки:

echo "$a"

Связанные:

6
28.01.2020, 02:13

Теги

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