У меня есть эти файлы в pwd:
$pwd
/home/user/Desktop/perl
$ls
file.txt foo.c bar.c
Теперь, команда find:
$sudo find / -type f -name foo.c
/home/user/Desktop/perl/foo.c
find: ‘/proc/1764/task/1764/net’: Invalid argument
find: ‘/proc/1764/net’: Invalid argument
/run/live/persistence/sda5/rw/home/user/Desktop/perl/foo.c
/usr/lib/live/mount/persistence/sda5/rw/home/user/Desktop/perl/foo.c
Итак, совпадение с первым путем, что find
найдено. Теперь я хотел бы захватить оба файла (foo.c
и bar.c
) в perl скрипте:
#!/usr/bin/perl -w
@ar=("foo.c", "bar.c");
@ar2=`sudo find / -type f -name $_ | head -n1` for @ar;
print "$_\n" for @ar2
output :
find: ‘/proc/1764/task/1764/net’: Invalid argument
find: ‘/proc/1764/net’: Invalid argument
find: ‘/proc/29943’: No such file or directory
find: ‘/proc/1764/task/1764/net’: Invalid argument
find: ‘/proc/1764/net’: Invalid argument
find: ‘/proc/30037’: No such file or directory
/home/user/Desktop/perl/bar.c
As вы можете видеть, я могу использовать sudo
внутри (backticks), but the result will not assign to the array properly (it gets only one of the files from the list, not both) even in list context. So how to properly find files in perl from `root` (and thus must with sudo privileges) via
в perl?