Текущее имя файла для find / xargs / perl -ne?
Вопрос
Я работаю в оболочке, пытаясь найти символы NUL в кучке CSV-файлов (о которых нынёт импортер CSV для Python, но это в другой раз), используя так называемую-гордую-вечно-умную- себя:
родовое слово За исключением того, что я не вижу имени файла. Предположительно неявный оператор <>, которым perl -ne
обертывает мой скрипт, просто использует дескриптор файла @ARGV
/ ARGV
, но ни одно из вышеперечисленных не дает мне имя текущего файла.
Как мне увидеть текущее имя файла (и, в идеале, номер строки) в приведенном выше примере?
Решение
$ARGV
- это имя текущего файла, а $.
- текущий номер строки;см. perldoc perlvar
и операторы ввода-вывода в perldoc perlop
.(Обратите внимание, что $.
не сбрасывается между файлами; это обсуждается в perldoc -f eof
.)
И я не совсем уверен, чего вы пытаетесь достичь с помощью этого кодового кода;он предоставит вам номер дескриптора файла, который, вероятно, равен 3, добавленный к списку имен файлов, разделенных пробелами (который, вероятно, должен быть только один из-за print
), а затем текущая строка, которая будет включать xargs -n
и другие потенциально сбивающие с терминалаперсонажей.
Другие советы
Выполните примерно следующее (здесь я искал "x" в файлах .pl):
родовое слово И да, его можно сократить с помощью переключателя -n
: