Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
chown的mkpath等价物[Perl]_Perl_Chown - Fatal编程技术网

chown的mkpath等价物[Perl]

chown的mkpath等价物[Perl],perl,chown,Perl,Chown,如何对给定路径上的所有目录执行chown(类似于perl中的mkpath) i、 e.如果我给出/home/parth/something/else作为输入,则此路径上的所有目录都将具有该所有者。 有内置的功能吗 用于标识要更改的文件,然后在找到的文件上使用 use File::File::Rule qw( ); my $uid = getpwnam('...') or die; my $gid = getgrnam('...') or die; for my $qfn (File::Fin

如何对给定路径上的所有目录执行chown(类似于perl中的mkpath)

i、 e.如果我给出/home/parth/something/else作为输入,则此路径上的所有目录都将具有该所有者。 有内置的功能吗

用于标识要更改的文件,然后在找到的文件上使用

use File::File::Rule qw( );

my $uid = getpwnam('...') or die;
my $gid = getgrnam('...') or die;

for my $qfn (File::Find::Rule->in('/home/parth/something/else')) {
   chown($uid, $gid, $qfn)
      or warn("chown $qfn: $!\n");
}
用于标识要更改的文件,然后在找到的文件上使用

use File::File::Rule qw( );

my $uid = getpwnam('...') or die;
my $gid = getgrnam('...') or die;

for my $qfn (File::Find::Rule->in('/home/parth/something/else')) {
   chown($uid, $gid, $qfn)
      or warn("chown $qfn: $!\n");
}

它没有内置的功能。但是,您可以使用核心模块遍历目录树、获取UID和更改所有权

#!/usr/bin/env perl

use strict;
use warnings;

use File::Find;

sub usage {
    die "Usage: $0 USERNAME PATH\n";
}

my $username = shift or die usage;
my $uid = ( getpwnam $username )[2] or die "Non-existent user.\n";

my $path = shift or die usage;
if ( !-e $path ) {
    die "Non-existent path.\n";
}

find( \&traverse, $path );

sub traverse {
    chown $uid, -1, $_ or die "Failed to chown [$_]: $!";
}
用法
它没有内置的功能。但是,您可以使用核心模块遍历目录树、获取UID和更改所有权

#!/usr/bin/env perl

use strict;
use warnings;

use File::Find;

sub usage {
    die "Usage: $0 USERNAME PATH\n";
}

my $username = shift or die usage;
my $uid = ( getpwnam $username )[2] or die "Non-existent user.\n";

my $path = shift or die usage;
if ( !-e $path ) {
    die "Non-existent path.\n";
}

find( \&traverse, $path );

sub traverse {
    chown $uid, -1, $_ or die "Failed to chown [$_]: $!";
}
用法
您不需要更改常规文件的所有者吗?只有目录?是的,只有目录。对不起,有个不清楚的问题。我的意思是,如果上面给出了路径,目录home,parth,something的所有者。你不需要更改常规文件的所有者吗?只有目录?是的,只有目录。对不起,有个不清楚的问题。我的意思是,如果上面的路径是给定的,目录home,parth,something的所有者。@Alan Haggai Alavi,谢谢,我总是向后看。@Alan Haggai Alavi,谢谢,我总是向后看。