如何查找tree
拥有的用户和tree
拥有的组?我怎样才能找到一个完整的目录,其中文件归tree
?目录中的文件权限
Q
目录中的文件权限
0
A
回答
3
File::Find模块是一个标准的Perl模块(即它可以在Perl的所有安装中使用)。您可以使用File :: Find来浏览目录树并搜索您想要的文件。
要使用,您可以创建一个wanted
子例程来分析这些文件,然后让子程序find
在其调用中包含该例程。 File::Find
模块有点奇怪,因为它最初只是用于find2perl命令。
这是一些完全未经测试的代码。注意你喜欢使用全局变量和包变量。这是我不喜欢File::Find
的原因之一。
use File::Find;
our $myUid = getpwnam('tree');
our $muGid = getgrnam('tree');
find (\&wanted, @dirList);
sub wanted {
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, $atime,$mtime,$ctime,$blksize,$blocks) = stat($File::Find::name);
next if (not -f $File::Find::name);
next if ($uid != $myUid);
next if ($gid != $myGid);
print qq(File "$File::Find::name" is owned by group 'tree' and user 'tree'\n);
}
我写我自己File::Find
称为File::OFind
,因为它更多地是面向对象的。你可以从here得到。这比较容易理解。 (同样,经过充分测试):
use File::OFind;
# Really should test if these return something
my $myUid = getpwnam('tree');
my $muGid = getgrnam('tree');
# Create your directory search object
my $find = File::OFind->new(STAT => 1, $directory);
# Now keep looping and examining each file
while($find->Next) {
next if ($find->Uid != $myUid);
next if ($find->Gid != $myGid);
next if ($find->Type ne "f"); #Is this a file?
print $find->Name . " is owned by group and user tree\n";
}
0
您将需要完成此任务的内置Perl函数包括,getgrnam
和stat
。
($name,$passwd,$uid,$gid,
$quota,$comment,$gcos,$dir,$shell,$expire) = getpwnam 'tree';
将返回大量关于用户tree
的有用信息。对于此任务,您将对$uid
字段特别感兴趣。同样,
($name,$passwd,$gid,$members) = getgrnam 'tree';
检索有关组01的数据。您将对$gid
字段最感兴趣。最后,stat
功能
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks)
= stat($filename);
返回与关于文件(或目录)的系统信息的13个元素的阵列。对于您的任务,您正在查找文件,以便从stat($filename)
返回的用户和组ID与从和getgrnam
返回的用户和组ID匹配。
0
文件::查找::规则使得这个干净而简单:
use File::Find::Rule;
my $uid_tree = getpwnam('tree');
my $gid_tree = getgrnam('tree');
my @files =
File::Find::Rule
->file()
->uid($uid_tree)
->gid($gid_tree)
->in('.');
编号:
相关问题
- 1. C#文件/目录权限
- 2. 负责的文件和目录权限
- 3. Ansible:在.yml文件中更改目录中文件的权限
- 4. rsync部署和文件/目录权限
- 5. 文件/目录权限centos 6.2
- 6. 目录/文件权限问题
- 7. 文件权限不会继承目录权限
- 8. Proftp目录权限
- 9. 目的C不能写入文件目录的权限问题
- 10. Java文件副本 - 如何继承目标目录的权限
- 11. Linux中所有用户的显示文件/目录权限
- 12. 目录中所有文件的列表组和用户权限
- 13. 持久权限在目录HDFS中的所有文件
- 14. Apache和linux文件权限无法浏览文件或目录
- 15. 检查Oracle中目录的权限
- 16. 从目录中删除的权限
- 17. 在Android中为/ data/sdcard设置默认文件/目录权限
- 18. django目录apache2权限
- 19. mongodb&/ data/db目录权限
- 20. Python - 测试目录权限
- 21. C#保存目录权限
- 22. wix serviceinstall目录权限
- 23. cakePHP tmp目录权限
- 24. IIS ASP.net目录权限
- 25. Android - 更改目录权限
- 26. joomla目录权限问题
- 27. 更改目录权限
- 28. 搞砸了文件权限在/ home目录GoDaddy的的cPanel
- 29. 正确的网站目录的文件权限
- 30. 松散的目录/文件权限:陷阱,安全问题?
看看'File :: Find' – 2011-03-07 15:55:23
我编辑了你的问题来澄清你的意思(我相信)。 (“树”作为用户/组名的选择引起了我的警惕,因为它也可以表示目录结构......) – Cascabel 2011-03-07 15:57:20