Для простоты обслуживания (если бы Ваш список строк для поиска может измениться в будущем), я поместил бы шаблоны в файл (например, patterns.txt) и использовал бы -f
переключатель (-R
является ненужным, если Вы ограничиваете find
в файлы; -H
даст Вам имя файла в случае, если существует только один; -F
причины grep для обработки шаблонов, которые Вы ищете как строки и не регулярные выражения, который обычно является, что Вы хотите):
find /var/www/http -type f -exec grep -iHFf patterns.txt {} +
Расширение скобки, о котором вы спрашиваете, будет расширяться только для файлов/каталогов, которые совпадают на диске с используемым шаблоном. Другая проблема, с которой вы столкнетесь, это то, что diskutil
не может обрабатывать более 1 аргумента за раз. Для их расширения необходимо выполнить в то время как
или для
цикла и передать результаты в diskutil
во время выполнения итераций по циклу.
$ for i in /dev/*; do diskutil "$i";done
Что касается вашего второго вопроса, то на самом деле нет никакого метода, который бы помог вам в ситуациях, когда на диске нет соответствующих файлов/каталогов.
Учитывая вывод этой команды, Вам придется прибегнуть к использованию таких инструментов, как awk
, sed
, или grep
для "разбора" этого вывода, чтобы Вы могли получить значимую информацию о дисках, для последующих запросов, вызывая diskutil
во 2-ой раз.
Вот пример грубого парсинга выхода из diskutil
с помощью grep
и sed
. Есть более эффективные способы сделать это, но это показывает вам общий подход.
$ diskutil list | grep -E "[ ]+[0-9]+:.*disk[0-9]+" | sed 's/.*\(disk.*\)/\1/'
disk0
disk0s1
disk0s2
disk0s3
С помощью этого подхода вы можете затем изменить цикл для
выше так:
$ for i in $(diskutil list | grep -E "[ ]+[0-9]+:.*disk[0-9]+" | \
sed 's/.*\(disk.*\)/\1/'); do diskutil info $i; done
Если вывод diskutil list
что-то вроде disk0 disk0s1 disk1s1
(разделенный пробелом или новой строкой), то Вам нужно что-то вроде этого:
for dev in $(diskutil list); do
diskutil info "$dev"
done
find
find ~/ -type f \( -name '*mp3' -or -name '*mp4' \)
Вы должны процитировать метасимволы, которые find
должен видеть.