Предполагая, что имеется один *
, мы можем написать Perl-скрипт expandstar
для его расширения
#!/usr/bin/perl
my $a=shift; ## a='he*.c' for example
my $b=($a=~s/\*/(.*)/gr); ## b='he(.*).c'
for( glob($a)){ ## for all files matching a
print s/$b/$1/r,"\n" ## print after substituting
}
Использование:
$ expandstar 'he*.c' ## dont forget '...'
sa1
sa2
Если вы предпочитаете онлайн-пользователей (, позор вам):
perl -E '$a=$b=shift; $b=~s/\*/(.*)/; say s/$b/$1/r for glob($a)' 'he*.c'
В конце концов я обнаружил, что хотя в списке содержимого общей папки указано , что файлы принадлежали пользователю root, фактические свойства файлов не изменились по сравнению с тем местом, откуда я их скопировал. Поэтому, когда я записал компакт-диск с этими файлами и смонтировал этот компакт-диск в виртуальной машине, файлы появились с правами собственности, которые у них были изначально . Итак, то, что казалось проблемой, оказалось не проблемой!