найти набор общих файлов между несколькими каталогами?

это - больше, чем интерфейс, такие как Webmin, но основанное на Ubuntu распределение с OpenLDAP, Samba, хорошим GUI с пользовательским самообслуживанием и партиями больше.... Zentyal

9
28.06.2012, 19:41
4 ответа

Перечислите все имена (не пути) файлов, характерных для всех каталогов.

dirs=( "A dir" "B dir" "C dir" "D dir" )
find "${dirs[@]}" -maxdepth 1 -type f -name "*" -printf '%f\n' |
  sort | uniq -c | sed -n "s/^ *${#dirs[@]} //p"

Или назовите его как файл сценария или функцию с каталогами как параметры.

find "$@" -maxdepth 1 -type f -name "*" -printf '%f\n' |
  sort | uniq -c | sed -n "s/^ *$# //p"
7
27.01.2020, 20:07

Можно отобразить список имен, отсортированных по количеству каталогов, в которых они появляются.

find */ |              # traverse all the template directories
sort -t / -k 2 |       # sort, ignoring the first field
tr '/' '\t' |          # turn / into tabs
uniq -f 1 -c |         # count duplicates, ignoring the first field
tr '\t' '/' |          # turn tabs back into /
sort -t / -s -k 1n     # sort by the number of occurrences
1
27.01.2020, 20:07

С Комбинацией можно сравнить два каталога и видеть, какие файлы присутствуют в одном, а не в другой и наоборот. Это может также показать различия между общими файлами.

0
27.01.2020, 20:07

Для 3 каталогов, одного из них ток, и два и 'b', можно объединить тест в цепочку как это:

ls a/$(ls b/$(ls *.php) 2>/dev/null) 2>/dev/null

если файлы имеют общий шаблон (как .php) и не содержат пробел в именах файлов.

Используя ls в Сценариях всегда проблематично, и я обычно отговариваю использовать его, но если у Вас есть обзор обо всех файлах в каталоге, где поиск запускается, и это не содержит пробел, ни специальные символы как "*" или"?", "<" или "|", это должно быть сохранение для использования его.

0
27.01.2020, 20:07

Теги

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