С шариками:
for dir in */; do mkdir -- "$dir/tmp1"; done
*/
как шарикЕсли Вы хотите создать несколько subdirs сразу:
for dir in */; do mkdir -- "$dir"/{tmp1,foo,bar,qux}; done
Любое использование
diff -u file1 file2
или
git diff branch/commit1 branch/commit2
Больше на разности мерзавца в https://www.kernel.org/pub/software/scm/git/docs/git-diff.html
Я не знаю ни о ком --git
опция однако для diff
и страница справочника не показывает его.
Вообще говоря, когда вы запускаете рекурсивное различие между двумя каталогами, для каждого файла diff включает команду diff, показывающую, что он делает для каждого файла. Например:
$ diff -ru a b
diff -ru a/file b/file
--- a/file 2015-07-17 01:06:14.078875805 -0700
+++ b/file 2015-07-17 01:06:21.969077076 -0700
@@ -1 +1 @@
-hello
+goodbye
Git хочет создавать патчи в том же формате, поэтому каждому файлу должна предшествовать строка, начинающаяся « diff
...». Но поскольку git использует собственную внутреннюю реализацию diff, чтобы люди, читающие вывод, понимали, на что они смотрят, git добавляет воображаемый флаг - git
.
На самом деле, если вы хотите использовать git для сравнения двух файлов или каталогов в файловой системе, вы можете запустить:
git diff --no-index a b
(Флаг - no-index
указывает игнорировать любой репозиторий git вы находитесь. Эту опцию можно не указывать, если вы не находитесь в репозитории git.) Git производит вывод в формате unidiff. Если вы хотите приблизиться к этому с помощью команды system diff, вы можете использовать diff -ru a b
. (Флаг -u
выбирает формат unidiff, а -r
рекурсивно переходит в каталоги.)
Настоящая правда в том, что git отображает поддельную команду.
$ git diff drivers/cpufreq/intel_pstate.c
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 286bfoo..14a8foo 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c