разность два каталога, но игнорируют расширения

не уверенный, если я понимаю, это право, но-b не изменит корневую папку. Это поместит временный архив zip в каталог,/home/cryus, копируя по sql.zip в текущий каталог при выполнении. Эта опция только полезна при обновлении существующего архива, и файловая система, содержащая этот старый архив, не имеет достаточного количества пространства для содержания и старых и новых архивов одновременно.

попытка использовать:

- j Хранилище просто название сохраненного файла (выбрасывают путь), и не хранят имена каталогов. По умолчанию zip сохранит полный путь (относительно текущего пути).

5
09.01.2015, 12:11
2 ответа

Зависит от того, где вы смотрите. Глава 2, Раздел 9,1 :

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

Я бы предположил, что этот список является исчерпывающим, и поскольку разделение полей не упоминается, отсутствие разделения полей определяется POSIX.

-121--84516-

Возможно, связано с Intel Errata HSW131 (или аналогично) что является ложными и безвредными ошибками MCA 05 (внутренняя ошибка четности).

Решение: Игнорировать.

-121--60160-

С помощью zsh :

diff -u <(cd dir1 && printf '%s\n' **/*(D:r)) \
        <(cd dir2 && printf '%s\n' **/*(D:r))

(D) включить точечные файлы (скрытые файлы), : r получить имя корня (удалить расширение).

Использование глоббинга гарантирует непротиворечивый порядок сортировки.

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

3
27.01.2020, 20:37

Вы можете использовать эту команду:

comm -12 <(find dir1 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort) <(find dir2 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort)

Она использует find, чтобы перечислить все файлы в каждом каталоге, затем basename и подстановку параметров, чтобы удалить имена каталогов и расширения файлов. comm сравнивает эти два списка.

Пример:

$ tree
.
|-- dir1
|   |-- test1.txt
|   |-- test2.txt
|   `-- test3.txt
`-- dir2
    |-- test2.txt
    `-- test4.txt

$ comm -12 <(find dir1 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort) <(find dir2 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort)
test2
$ comm -23 <(find dir1 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort) <(find dir2 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort)
test1
test3
$ comm -13 <(find dir1 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort) <(find dir2 -type f -exec bash -c 'basename "${0%.*}"' {} \; | sort)
test4

comm -12 покажет все имена файлов, общие для обоих каталогов. запятая -23 покажет все имена файлов, уникальные для dir1, запятая -13 покажет имена файлов, уникальные для dir2.

3
27.01.2020, 20:37

Теги

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