Смотря наверху Спецификаций Основы Open Group, Вы будете видеть стандартный идентификатор Станд. IEEE 1003.1-2008. Станд. IEEE 1003.1 - то, что известно как POSIX.1 с 2 008 просто быть последним воплощением. Смотря на POSIX на Википедию, Вы будете видеть, что стандарт содержит три части включая:
В основном POSIX является просто названием стандарта, разработанного IEEE с начальной версией, сделанной в 1988. POSIX не является UNIX™ официально просто, потому что IEEE не владеет товарным знаком, но это - среда операционных систем и интерфейс, найденный в системах UNIX™. Позже, Open Group, которая управляет товарным знаком UNIX™, занялась созданием стандарта на основе POSIX под названием Единственная версия 2 или SUSv2 Спецификации UNIX. Теперь эти две спецификации разрабатываются совместно как Austin Group. Последняя версия является SUSv4. Так, для подведения:
POSIX:2008 = станд. IEEE 1003.1-2008 = SUSv4 = открыть Group Specification Issue 7.
Кроме того, прочитайте мой ответ на то, Что такое точно POSIX?
Я попытался бы использовать единственную находку как:
find .*/ -maxdepth 1 -type f -name '*.ini' -execdir md5sum {} +
или даже (нет find
вообще просто окружите globbing),
md5sum .*/*.ini
хотя этому недостает -type f
проверьте поэтому только работы, если у Вас нет directories/non-files, заканчивающегося в .ini
. Если Вы делаете Вы могли бы использовать
for x in .*/*.ini; do
if [ -f "$x" ]; then
md5sum "$x"
fi
done
который однако потерял бы преимущество только необходимости в одном md5sum вызове.
Править
Для общего и надежного метода объединения в цепочку find
, можно сделать что-то как
find <paths> <args> -print0 | xargs -0 -I{.} find {.} <args for second find> [etc.]
Ваша исходная проблема не требует, чтобы вызов нашел рекурсивно, но я предполагаю, что это не было точкой.
Я полагаю, что не возможно звонить, находят рекурсивно в способе, которым Вы хотите.
Следующее не звонит, находят рекурсивно (или вложение, независимо от того, что это называют) также но Вы не можете только взять набор результатов первой находки и подать ее к второй? Это - то, как я инстинктивно сделал бы:
find `find ./ -maxdepth 1 -type d -name '.*'` \
-maxdepth 1 -type f -name '*.ini' -exec md5sum {} \;
Вы могли также использовать xargs
для выполнения второй находки.
Обновление:
Я хотел добавить, что, потому что большинство утилит UNIX берет несколько аргументов имени файла вместо одного, можно обычно избегать -exec
в целом:
md5sum `find \`find ./ -maxdepth 1 -type d -name '.*'\` -maxdepth 1 -type f -name '*.ini'`
Когда вложенные обратные галочки Вы просто добавляете обратные косые черты \
перед внутренними.
Если мы воображаем это md5sum
берет только один аргумент имени файла, мы можем всегда переносить его в a for
цикл:
for f in `find \`find ./ -maxdepth 1 -type d -name '.*'\` -maxdepth 1 -type f -name '*.ini'`
do
md5sum $f
done
Обратите внимание, что это становится более трудным если файл/имена каталогов, запускающийся с -
или содержание пространства включено. Утилиты UNIX не играют приятно с ними. В этом случае добавление ./
, --
или кавычки необходимы.
Очевидно, исходным примером не является хороший, потому что мы могли просто сделать:
md5sum .*/*.ini
find
методы получают ошибку, когда файл/каталог содержит пробелы... md5sum .*/*.ini
хорошо работает... Я начинаю получать общее ощущение, которое * Warren Young* комментирует о вещах, становящихся 'сложным' для find
происходит вначале в игре :), но я принимаю find
добивается признания, когда тесты условия более сложны, но до вложения - идет должностное лицо, я вполне прилично отбросил идею, поскольку кажется, что существуют более простые способы сделать это.. (но жемчуг не "прост" мне (еще)...
– Peter.O
05.08.2011, 13:13
По крайней мере, мне удалось вложить 2, находят команды:
find ~ -maxdepth 1 -type d -name '.*' -execdir \
find {} -maxdepth 1 -type f -name '*.ini' \;
Но я не решил для вызова другого - должностного лица (dir) - вызов оттуда.
-f
(f?), и затем другая ошибка с-execdir
.. Когда я заменяю-execdir - должностное лицо, и/или также заменяющий md5sum с печатью, я ничего не получаю.. – Peter.O 05.08.2011, 08:54find
... Это не так, что я просто хочу этот разрешенный пример, я ищу понимание способов находки-fu..., возможно, там больше пуха, чем fu в находке.. (Я не знаю, потому что я фактически никогда не использовал его), и это - первая ситуация, я действительно хотел использовать его (для файлов изображений на самом деле) и - исполнительная функция, о которой я услышал так много, кажется, не так всесилен, как его представитель (?) ссылается на... (+1 для альтернатив, хотя).. но Вашfind
пример просто не работает (все еще) – Peter.O 05.08.2011, 09:31find
команда:...find: The relative path
~ / мусорное ведро' включен в переменную окружения PATH, которая небезопасна в сочетании с-execdir действием находки. Удалите ту запись из $PATH'.... Таким образом, возможно, это будет работать, но я должен сказать, что пытался избавиться от того ~ / мусорное ведро некоторое время теперь... Я "ll должен взять в качестве более серьезного взгляда на него... Я не знаю, где я" ve устанавливаю его... любые идеи, где Это может скрываться;~/bin
в моем – Peter.O 05.08.2011, 09:36find
лучше всего ценится в ситуациях, которые не могут быть сделаны полностью с шариками, но поскольку те виды ситуаций редки, я не обычно должен находить много. – jw013 05.08.2011, 09:40