LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2241|回复: 2

[请教]快速获取文件属主

[复制链接]
发表于 2009-7-18 18:04:00 | 显示全部楼层 |阅读模式
最近需要写个脚本查找符合条件的文件mv到指定目录下以属主命名的子目录。主要是2个步骤,1.找到符合条件的文件,2.将符合条件的文件mv到指定目录下以属主命名的子目录。
例:
我find /home -type f -name "file_*"
找到下列符合条件的文件
/home/grp1/usera/dir1/file_xuul1
/home/userb/deph1/deph2/file_asd.log
/home/grp2/userc/log3
mv文件到/home/target,mv后的文件路径如下:
/home/target/usera/file_xuul1
/home/target/userb/file_asd.log
/home/target/userc/log3

我只想到了用ls -l /home/grp1/usera/dir1/file_xuul1 | awk 这样去获取属主,然后到/home/target/下建立以属主命名的目录,然后mv文件到对应目录下。
由于符合条件的文件较多,用户也比较多,300个用户左右,符合条件的文件一般再1000个左右。
请各位帮忙想想更好效率的办法,先谢了。
发表于 2009-7-19 02:46:06 | 显示全部楼层
从passwd获取所有的用户,一次性地建好所有的目录,用一个find命令分类把所有的文件放好
下面的代码未经测试,仅做参考
  1. awk -F : '$3>=1000{ #假设用户id>=1000
  2.     dirs=dirs" "$1;
  3.     findstr=findstr" -type f -name file_* -user "$1" -exec mv {} /home/target/"$1" \; -o";}
  4. END{system ("cd /home/target; mkdir "dirs);
  5.     findstr=findstr" print";
  6.     system ("find /home"findstr);
  7. }' /etc/passwd
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-8-15 15:09:14 | 显示全部楼层
stduy this one
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表