我在目录下有一堆文件。如何查看所有这些内容并确定它是否是perl脚本?(他们不会在文件名中包含.pl)
答案 0 :(得分:2)
检查shebang
validateUser(User)
通常,大多数命令行脚本都包含shebang,例如
head -n 1 script | grep perl
如果您正在调用此类脚本
,则不需要它们#!/usr/bin/perl
但如果您想将它们称为系统命令,则可以提供帮助。
答案 1 :(得分:2)
如果您不能依赖有效的shebang,则可以将其传递给perl -c
。
for f in *; do
perl -c "$f" 2>/dev/null && echo "$f is Perl"
done
如果您想要正确的机器可读输出,可以将echo
切换到printf '%s\0' "$f"
,以便将其传递给xargs -0
和朋友。
这个明显的缺陷是,其中包含错误的Perl脚本将被报告为不是(有效)Perl。
答案 2 :(得分:0)
find ./ -type f -exec egrep -I -l '^use strict;|^use warnings;|^sub |my \$|my \%|my \@|\->{' {} + 2>&1 \
| egrep -v 'README|\.git|\.zsh$|.sh$' \
| xargs file | grep 'ASCII' \
| awk '{print $1}' \
| sed 's/:$//'
不完美,但这会发现大多数文件都带有相对现代的Perl5代码
答案 3 :(得分:-1)
由于他们没有扩展名,请尝试:
find /path/to/directory/ -type f | while read line; do if file -b "$line" | grep -i perl -q; then echo "$line is a perl file"; fi; done