当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 11 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 求脚本:列出一个文件系统内的所有硬链接
帖子发表于 : 2011-02-21 11:44 
头像

注册: 2008-02-15 0:09
帖子: 852
送出感谢: 0 次
接收感谢: 0 次
一个文件系统内,例如单独挂载的/home,找出/home内所有的硬链接文件。
只知道硬链接的inode相同,ls -i 可以列出文件的inode。
有一个想法是先用ls -i 列出一个目录里的inode,然后用find -inum 来找是否有与某个文件相同inum的文件。


_________________
Somebody think they are full of niubility, so they play a zhuangbility, but only reflect their shability.


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 求脚本:列出一个文件系统内的所有硬链接
帖子发表于 : 2011-02-21 11:50 
头像

注册: 2008-04-26 12:41
帖子: 11000
送出感谢: 11
接收感谢: 38
:em06


_________________
[新手必读]wubi安装常见问题(FAQ)
[分享]装双系统的同学必看——Windows与Linux系统共享交换分区的方法
kde下唯美的暗黑内透主题(无需编译)
无穷老机上的Trinity Desktop Environment


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 求脚本:列出一个文件系统内的所有硬链接
帖子发表于 : 2011-02-22 1:24 

注册: 2007-07-01 17:36
帖子: 229
地址: (En):address
系统: (En):System
送出感谢: 2
接收感谢: 3
见以下例子,你修改要查找的目录为"/"就可以了


代码:
7PLaptop::/tmp/delme2
kent$ ls -l                                                                                                                                                                           [ 18:21 ]
total 0

7PLaptop::/tmp/delme2
kent$ echo "hi there">o.txt                                                                                                                                                        [ 18:21 ]


7PLaptop::/tmp/delme2
kent$ ln o.txt hl.txt                                                                                                                                                              [ 18:21 ]

7PLaptop::/tmp/delme2
kent$ ln -s o.txt sl.txt                                                                                                                                                           [ 18:22 ]

7PLaptop::/tmp/delme2
kent$ touch {1..5}.txt                                                                                                                                                             [ 18:22 ]

7PLaptop::/tmp/delme2
kent$ ls -l                                                                                                                                                                        [ 18:22 ]
total 8
-rw-r--r-- 1 kent kent 0 2011-02-21 18:22 1.txt
-rw-r--r-- 1 kent kent 0 2011-02-21 18:22 2.txt
-rw-r--r-- 1 kent kent 0 2011-02-21 18:22 3.txt
-rw-r--r-- 1 kent kent 0 2011-02-21 18:22 4.txt
-rw-r--r-- 1 kent kent 0 2011-02-21 18:22 5.txt
-rw-r--r-- 2 kent kent 9 2011-02-21 18:21 hl.txt
-rw-r--r-- 2 kent kent 9 2011-02-21 18:21 o.txt
lrwxrwxrwx 1 kent kent 5 2011-02-21 18:22 sl.txt -> o.txt


7PLaptop::/tmp/delme2
kent$ find . -type f -links +1                                                                                                                                                     [ 18:23 ]
./o.txt
./hl.txt



顺便提一句,LZ的签名中有语法错误。 :em03


_________________
---
regards,

Kent


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 求脚本:列出一个文件系统内的所有硬链接
帖子发表于 : 2011-02-22 8:29 
头像

注册: 2008-02-15 0:09
帖子: 852
送出感谢: 0 次
接收感谢: 0 次
good!,多谢LS。没仔细地查看过find的用法,该打。
PS:语法错误什么的,LS,你懂的......


_________________
Somebody think they are full of niubility, so they play a zhuangbility, but only reflect their shability.


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 求脚本:列出一个文件系统内的所有硬链接
帖子发表于 : 2011-04-27 11:58 

注册: 2011-01-09 14:56
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
感谢楼上诸位 :em09
find的功能还是非常强大的。 :em04


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 求脚本:列出一个文件系统内的所有硬链接
帖子发表于 : 2011-04-27 12:11 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
find嘛。

要是谁有快速的找出某文件被ln到哪里的,这倒是有技术含量。


_________________
● 鸣学


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 求脚本:列出一个文件系统内的所有硬链接
帖子发表于 : 2011-04-27 13:08 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
eexpress 写道:
find嘛。

要是谁有快速的找出某文件被ln到哪里的,这倒是有技术含量。


[python]
#!/usr/bin/env python3
# fileencoding=utf-8

'''
找出文件系统中所有链接数大于1的文件

2010年8月6日
'''

import os, sys, subprocess

def getfilelist(path):
'''使用 find 命令找出所有链接数大于1的文件,返回此列表'''
cmd = "find '%s' -type f -links +1 2> /dev/null" % path
return subprocess.getoutput(cmd).split('\n')

def findsamefile(l):
'''找出 l 中的文件中,哪些是同一文件'''
ret = []
while l:
curfile = l[0]
ret.append([curfile])
for i in l[1:]:
if os.path.samefile(curfile, i):
ret[-1].append(i)
l.remove(i)
del l[0]

return ret

def print2file(l, file=sys.stdout):
'''把 findsamefile 的结果格式化输出'''
sys.stdout = file
for i in l:
for j in i:
print(j)
print()
sys.stdout = sys.__stdout__

if __name__ == '__main__':
if len(sys.argv) not in (2, 3):
print('用法:%s 路径 [输出目标]' % os.path.basename(sys.argv[0]),
file=sys.stderr)
sys.exit(1)

if len(sys.argv) == 3:
f = open(sys.argv[2], 'w')
else:
f = None

l = getfilelist(sys.argv[1])
result = findsamefile(l)
if f:
print2file(result, f)
else:
print2file(result)
[/python]


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 求脚本:列出一个文件系统内的所有硬链接
帖子发表于 : 2011-04-27 13:15 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
这代码框太小了。

居然有人作这事情,难得。


_________________
● 鸣学


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 求脚本:列出一个文件系统内的所有硬链接
帖子发表于 : 2011-04-27 13:30 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
eexpress 写道:
这代码框太小了。


你手动点下那个“展开”吧。。。


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 求脚本:列出一个文件系统内的所有硬链接
帖子发表于 : 2011-04-27 13:36 
头像

注册: 2009-10-08 11:15
帖子: 8428
地址: 大城市铁岭
送出感谢: 0 次
接收感谢: 9
这代码框太小了 :em04


_________________
我们是命运的妓女,它把我们都嫖了

N卡驱动:http://www.nvidia.cn/Download/index.aspx?lang=cn
极品飞车:http://www.geforce.cn/optimize/optimal-game-settings/need-for-speed-shift-geforce-gts-450-ops
孤岛危机优化设置:http://www.geforce.cn/optimize/optimal-game-settings/crysis-geforce-gtx-450-ops
:cp /etc/skel/.bashrc ~/
PS1="\[\e]2;\u@\H \w\a\e[32;1m\]\T$\[\e[0m\] "
http://cdimage.ubuntu.com/
http://releases.ubuntu.com/


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 求脚本:列出一个文件系统内的所有硬链接
帖子发表于 : 2011-04-27 13:39 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
擦。好高级哦。
我一直code的。 :em04


_________________
● 鸣学


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 11 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译