Соответствовать скопированному слою к размеру холста:
Это будет масштабировать слой к размеру изображения
Здесь вы отправляете имена файлов (вывод команды find
) в качестве входных данных для egrep; вы действительно хотите запустить egrep для содержимого файлов.
Вот несколько альтернатив:
find . -name "*.txt" -exec egrep mystring {} \;
или даже лучше
find . -name "*.txt" -print0 | xargs -0 egrep mystring
Проверьте справку команды find , чтобы проверить, что делают отдельные аргументы .
Первый подход порождает новый процесс для каждого файла, в то время как второй передаст более одного файла в качестве аргумента egrep; флаги -print0 и -0 необходимы для работы с потенциально опасными именами файлов (позволяющими правильно разделять имена файлов, например, даже если имя файла содержит пробел).
попробуйте:
find . -name '*.txt' | xargs egrep mystring
В вашей версии есть две проблемы:
Во-первых, , *. Txt
сначала будет расширен оболочкой, что даст вам список файлов в текущем каталоге, которые заканчиваются на .txt
, например, если у вас есть следующее:
[dsm@localhost:~]$ ls *.txt
test.txt
[dsm@localhost:~]$
ваша команда find
превратится в find. -name test.txt
. Просто попробуйте следующее, чтобы проиллюстрировать:
[dsm@localhost:~]$ echo find . -name *.txt
find . -name test.txt
[dsm@localhost:~]$
Во-вторых, , egrep
не берет имена файлов из STDIN
. Чтобы преобразовать их в аргументы, вам нужно использовать xargs
Вы можете использовать
find . -iname *.txt -exec egrep mystring \{\} \;
find . -name *.txt | egrep mystring
Это не сработает, поскольку egrep
будет искать mystring
в выводе, сгенерированном find. -name * .txt
- это просто путь к файлам *. txt
.
Вместо этого вы можете использовать xargs
:
find . -name *.txt | xargs egrep mystring
Вот пример, который возвращает пути к файлам для всех файлов *. Log
, строка которых начинается с ERROR
:
find . -name "*.log" -exec egrep -l '^ERROR' {} \;
в egrep есть рекурсивная опция, которую вы можете использовать
egrep -R "pattern" *.log
Если вам нужны только имена файлов:
find . -type f -name '*.txt' -exec egrep -l pattern {} \;
Если вам нужны имена файлов и совпадения:
find . -type f -name '*.txt' -exec egrep pattern {} /dev/null \;