В оболочке linux я хочу убедиться, что все наборы файлов начинаются с <?
этой точной строки и без других символов в начале. Как я могу grep или использовать какой-то другой, чтобы выразить «файл начинается с»?
Изменить: я подстановочный знак, и head
не дает имя файла в той же строке, поэтому, когда я grep это, я не вижу имя файла. Кроме того, "^<?"
кажется, не дает правильных результатов; в основном я получаю это:
$> head -1 * | grep "^<?"
<?
<?
<?
<?
<?
...
Все файлы действительно хороши.
command-line
bash
grep
user13743
источник
источник
find
find
может также возвращать только простые файлы непосредственно для запуска канала.read
вместо этогоhead
тоже:for file in *; do [ -f "$file" ] || continue; read < "$file"; [[ "$REPLY" =~ ^\<\? ]] || echo "$file"; done
Сделать
grep
:Разобрать имена файлов:
источник
Вы можете использовать awk для этого:
источник
За исключением пустых файлов, этот скрипт на Perl работает:
Я не сразу уверен, как обращаться с пустыми файлами; Я был бы склонен рассматривать их как отдельный особый случай:
источник
Попробуй это
Это получит список каждого файла, оканчивающегося на PHP, а затем цикл по нему. повторяя имя файла и затем печатая первую строку файла. Я только что вставил
даст вам вывод, как:
тогда вы можете вставить обычный grep в конце, чтобы избавиться от того, что вы хотите увидеть, и найти только исключения
вывод:
источник
for x in *.php;do echo $x \"
head -n1 $ x\";done
Баш 4.0
источник
должен делать то, что вы просите.
источник
cat
использование,head -1 file.txt | grep "^<?"
достаточно.command
, приму ли файл в качестве аргумента. Это может не быть строго необходимым, но я неэтот:
дает вам что-то вроде этого:
каждый файл, не содержащий ваш шаблон, будет помечен «1». Вы можете играть с этим, пока он не соответствует вашим потребностям.
источник
head -1 "$i" | grep '^<?' || echo "$i"
который будет печатать имя файла, только если это проблематично.Позволь мне попробовать
никто не сказал, что Вак не было доступно :-)
источник