sudo find /(-тип f -и -путь '*/ git / *' -iname 'README')-exec grep -liI '100644\|100755' {} \; -exec flip -u {} \;
я.(- введите f -и -путь '*/ git / *' -inname 'README' ):ищет файлы в пути, содержащем имя git и файл с именем README. Если вы знаете какую-либо конкретную папку и имя файла, поиск будет полезен.
II. -Команда exec запускает команду для имени файла, сгенерированного поиском
III.\; указывает на конец команды
iv.{} — результат поиска имени файла/папки, найденного в результате предыдущего поиска
v. Несколько команд могут быть запущены последовательно. Добавляя -exec "command" \; например, с -exec flip -u \;
vii.grep
1.-l lists the name of the file
2.-I searches only non-binary files
3.-q quiet output
4.'100644\|100755' searches for either 100644 or 100755 within the file found. if found it then runs flip -u. \| is the or operator for grep.
вы можете клонировать этот тестовый каталог и попробовать:https://github.com/alphaCTzo7G/stackexchange/tree/master/linux/findSolution204092017
более подробный ответ здесь:https://github.com/alphaCTzo7G/stackexchange/blob/master/linux/findSolution204092017/README.md
Если все это влезет в память, то
awk 'NR==FNR { s[$1]=$2 ; next }
{ print $0,s[$1] }' secondary.txt primary.txt
NR==FNR — это уловка, которая сообщает вам, обрабатываете ли вы первый файл (, предполагая, что первый файл не пуст ). Если это первый файл, сохраните значение второго столбца в ассоциативный массив и перейдите к следующей строке. Если мы не будем двигаться дальше, то мы должны обрабатывать второй файл, поэтому распечатайте значение из основного файла и сохраненное значение.