Для пользователей Mac:
На Mac head -n -1
не работает. Вместо этого переверните файл, отрежьте первую строку, а затем переверните ее обратно:
tail -r file.txt | tail -n +2 | tail -r
Объяснение:
tail -r
: меняет порядок строк во входных данных
tail -n +2
: печатает все строки, начиная со второй строки во входных данных
git
предоставляет git-check-ignore
, чтобы проверить, исключен ли файл с помощью .gitignore
.
Таким образом, вы можете использовать:
find . -type f -not -path './node_modules*' \
-a -not -path '*.git*' \
-a -not -path './coverage*' \
-a -not -path './bower_components*' \
-a -not -name '*~' \
-exec sh -c '
for f do
git check-ignore -q "$f" ||
printf '%s\n' "$f"
done
' find-sh {} +
Обратите внимание, что вам придется заплатить за это большие деньги, потому что проверка выполнялась для каждого файла.
Вы можете использовать массив, в котором будет выполняться команда bash.
Наличие таких файлов:
touch file1 file2 file3 some more file here
И наличие файла игнорирования
, подобного этому
cat <<EOF >ignore
file*
here
EOF
Использование
arr=($(cat ignore));declare -p arr
приведет к следующему:
declare -a arr='([0]="file" [1]="file1" [2]="file2" [3]="file3" [4]="here")'
Затем вы можете использовать любую технику для манипулирования этими данными.
Лично я предпочитаю что-то вроде этого:
awk 'NR==FNR{a[$1];next}(!($1 in a))' <(printf '%s\n' "${arr[@]}") <(find . -type f -printf %f\\n)
#Output
some
more
ignore
для этого есть команда git: например,
my_git_repo % git grep --line-number TODO
desktop/includes/controllers/user_applications.sh:126: # TODO try running this without sudo
desktop/includes/controllers/web_tools.sh:52: TODO: detail the actual steps here:
desktop/includes/controllers/web_tools.sh:57: TODO: check if, at this point, the menurc file exists. i.e. it was created
Как вы заявили, он будет выполнять базовую команду grep с большинством обычных параметров grep, но не будет искать .git
или какие-либо файлы или папки в вашем .gitignore
] файл.
Подробнее см. man git-grep
Подмодули:
Если у вас есть другие репозитории git внутри этого репозитория git (они должны быть в подмодулях), вы можете использовать флаг - рекурсивные подмодули
для поиска также и в подмодулях
Чтобы отобразить файлы, находящиеся в вашей кассе и отслеживаемые Git, используйте
$ git ls-files
. Эта команда имеет ряд параметров для отображения, например. кэшированные файлы, неотслеживаемые файлы, измененные файлы, игнорируемые файлы и т. д. См. git ls-files --help
.