为您找到与linux的find命令用法相关的共200个结果:
find是个使用频率比较高的命令。常常用它在系统特定目录下,查找具有某种特征【名字类型属主权限等】的文件。读文网小编分享了Linux find命令常见用法,希望大家喜欢。
·find path -option [ -print ] [ -exec -ok command ] {} ;
find命令的参数;
pathname: find命令所查找的目录路径。例如用。来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为‘command’ { } ;,注意{ }和;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
#-print 将查找到的文件输出到标准输出
#-exec command {} ; —–将查到的文件执行command操作,{} 和 ;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
例:find 。 -name .svn | xargs rm -rf
====================================================
-name filename #查找名为filename的文件
-perm #按执行权限来查找
-user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查GIN: 0px“》
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio %; #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune #忽略某个目录
=====================================================
$find ~ -name ”*.txt“ -print #在$HOME中查.txt文件并显示
$find 。 -name ”*.txt“ -print
$find 。 -name ”[A-Z]*“ -print #查以大写字母开头的文件
$find /etc -name ”host*“ -print #查以host开头的文件
$find 。 -name ”[a-z][a-z][0–9][0–9].txt“ -print #查以两个小写字母和两个数字开头的txt文件
$find 。 -perm 755 -print
$find 。 -perm -007 -exec ls -l {} ; #查所有用户都可读写执行的文件同-perm 777
$find 。 -type d -print
$find 。 ! -type d -print
$find 。 -type l -print
$find 。 -size +1000000c -print #查长度大于1Mb的文件
$find 。 -size 100c -print # 查长度为100c的文件
$find 。 -size +10 -print #查长度超过期作废10块的文件(1块=512字节)
$cd /
$find etc home apps -depth -print | cpio -ivcdC65536 -o /dev/rmt0
$find /etc -name ”passwd*“ -exec grep ”cnscn“ {} ; #看是否存在cnscn用户
$find 。 -name ”yao*“ | xargs file
$find 。 -name ”yao*“ | xargs echo ”“ 》 /tmp/core.log
$find 。 -name ”yao*“ | xargs chmod o-w
======================================================
find -name april* 在当前目录下查找以april开始的文件
find -name april* fprint file 在当前目录下查找以april开始的文件,并把结果输出到file中
find -name ap* -o -name may* 查找以ap或may开头的文件
find /mnt -name tom.txt -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find /mnt -name t.txt ! -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find /tmp -name wa* -type l 在/tmp下查找名为wa开头且类型为符号链接的文件
find /home -mtime -2 在/home下查最近两天内改动过的文件
find /home -atime -1 查1天之内被存取过的文件
find /home -mmin +60 在/home下查60分钟前改动过的文件
find /home -amin +30 查最近30分钟前被存取过的文件
find /home -newer tmp.txt 在/home下查更新时间比tmp.txt近的文件或目录
find /home -anewer tmp.txt 在/home下查存取时间比tmp.txt近的文件或目录
find /home -used -2 列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find /home -user cnscn 列出/home目录内属于用户cnscn的文件或目录
find /home -uid +501 列出/home目录内用户的识别码大于501的文件或目录
find /home -group cnscn 列出/home内组为cnscn的文件或目录
find /home -gid 501 列出/home内组id为501的文件或目录
find /home -nouser 列出/home内不属于本地用户的文件或目录
find /home -nogroup 列出/home内不属于本地组的文件或目录
find /home -name tmp.txt -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层
find /home -name tmp.txt -mindepth 3 从第2层开始查
find /home -empty 查找大小为0的文件或空目录
find /home -size +512k 查大于512k的文件
find /home -size -512k 查小于512k的文件
find /home -links +2 查硬连接数大于2的文件或目录
find /home -perm 0700 查权限为700的文件或目录
find /tmp -name tmp.txt -exec cat {} ;
find /tmp -name tmp.txt -ok rm {} ;
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件
查当前目录下的所有普通文件
# find 。 -type f -exec ls -l {} ;
-rw-r–r– 1 root root 34928 2003-02-25 。/conf/httpd.conf
-rw-r–r– 1 root root 12959 2003-02-25 。/conf/magic
-rw-r–r– 1 root root 180 2003-02-25 。/conf.d/README
查当前目录下的所有普通文件,并在- e x e c选项中使用ls -l命令将它们列出
=================================================
在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec -ok rm {} ;
=================================================
查询当天修改过的文件
[root@book class]# find 。/ -mtime -1 -type f -exec ls -l {} ;
=================================================
查询文件并询问是否要显示
[root@book class]# find 。/ -mtime -1 -type f -ok ls -l {} ;
《 ls … 。/classDB.inc.php 》 ? y
-rw-r–r– 1 cnscn cnscn 13709 1月 12 12:22 。/classDB.inc.php
[root@book class]# find 。/ -mtime -1 -type f -ok ls -l {} ;
《 ls … 。/classDB.inc.php 》 ? n
[root@book class]#
=================================================
查询并交给awk去处理
[root@book class]# who | awk ’{print $1”“$2}’
cnscn pts/0
=================================================
awk—grep—sed
[root@book class]# df -k | awk ‘{print $1}’ | grep -v ’none’ | sed s”//dev///g“
文件系统
sda2
sda1
[root@book class]# df -k | awk ‘{print $1}’ | grep -v ’none’
文件系统
/dev/sda2
/dev/sda1
1)在/tmp中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR”,最后打印出所有包含“SYSCALL_VECTOR”的文件名
A) find /tmp -name “*.h” | xargs -n50 grep SYSCALL_VECTOR
B) grep SYSCALL_VECTOR /tmp/*.h | cut -d’:‘ -f1| uniq 》 filename
C) find /tmp -name “*.h” -exec grep “SYSCALL_VECTOR” {} ; -print
2)find / -name filename -exec rm -rf {} ;
find / -name filename -ok rm -rf {} ;
3)比如要查找磁盘中大于3M的文件:
find 。 -size +3000k -exec ls -ld {} ;
4)将find出来的东西拷到另一个地方
find *.c -exec cp ‘{}’ /tmp ‘;’
如果有特殊文件,可以用cpio,也可以用这样的语法:
find dir -name filename -print | cpio -pdv newdir
6)查找2004-11-30 16:36:37时更改过的文件
# A=`find 。/ -name “*php”` | ls -l –full-time $A 2》/dev/null | grep “2004-11-30 16:36:37”
Linux-all, Linux | No Comments »
find 实例
要在/usr/linux中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR“,最后打印出所有包含”SYSCALL_VECTOR“的文件名,有以下几种方法实现
find /usr/linux -name ”*.h“ | xargs -n50 grep SYSCALL_VECTOR
grep SYSCALL_VECTOR /usr/linux/*.h | cut -d’:’ -f1 | uniq 》 filename
find /usr/linux -name ”*.h“ -exec grep ”SYSCALL_VECTOR“ {} ; -print
我用find / -name filename| rm -rf,不成功,请问为什么不成功?
find / -name filename -exec rm -rf {} ;
find 。 -name filename |rm -rf试一下{} 表示你找出来的结果。
; 则相当于“宪法”,没什么说头,就是这么规定的,在 -exec 后面需要一个表示该命令终结的的符号。可以在 man find 中找到答案。
要让rm识别find的结果,如下:
find / -name filename |xargs rm -rf
之所以find 。 -name filename |rm -rf不通过,是因为rm命令不接受从标准输入传过来的指令
查找含特定字符串的文件
例如查找当前目录下含有”the string you want find…“字符串的文件:
$find 。 -type f -exec grep “the string you want find…” {} ; -print
从根目录开始查tmpfile,一旦查到马上删除
find / -name ”tmpfile“ -exec rm {} ;
find 的perm问题
请问一下以下命令什么意思?关键是那个数字前的-,其他都还知道
find -name ”.*“ -perm -007
我知道
find -name ”.*“ -perm 755
这个是用来查找权限位为755的隐藏文件
噢,对了还有,我上边的命令都省略了find的pathname参数 find默认是查找当前工作目录的吗?
如果我用 -ok 替代 -exec, 那么还需要加上 {} ; 吗?
这个已经清楚,仍然需要,因为 -ok 只是 -exec 的提示模式,它只是多了一个确认操作的步骤,刚才没有读懂那几句E文的意思 呵呵 不好意思
-007是指查找所有用户都可读、写、执行的文件,要小心呀~~~
解释解释?
find -name ”.*“ -perm -007 和 find -name ”.*“ -perm 777 有区别吗?
-007是怎么来得呢?
不过有一个问题
我用 find 。 -perm -100 会列出当前目录 。 , 这是为什么呢?
下面引用由explover在 2002/10/01 06:15am 发表的内容:
-007是指查找所有用户都可读、写、执行的文件,要小心呀~~~
-007是查找含其它用户(不同组,非属主)可读,写,执行的文件。并不一定要同组可读写,-是指最少权限为007.
下面引用由一颗小白菜在 2002/10/01 10:16am 发表的内容:
OK了, 呵呵
不过有一个问题
我用 find 。 -perm -100 会列出当前目录 。 , 这是为什么呢?
这种方法不会准确的找出目录的。 -100是指权限至少是属主可运行。
在unix系统下,你可以拥有对目录文件的执行权你才可以进入一个目录。这便是目录文件被列出的原因。
find 。 -perm -001 -print找到往往是目录文件。
我的意思当然不是使用这种方法来找目录,只不过不明白其中的 -100 意义了
那以此类推,是不是 -010是指权限至少是owner同组可执行的吗?也就是说其实这里的010和-是分开的,-表示一个至少的意思,而且010才是真正用来描述权限位的?
这样子就明白了 谢谢你噢
将find出来的东西拷到另一个地方?
find *.c -exec cp ‘{}’ /tmp ‘;’
如果有特殊文件,可以用cpio,也可以用这样的语法:
find dir -name filename -print | cpio -pdv newdir
找出磁盘中某个大小范围内的文件
比如要查找磁盘中大于3M的文件:
find 。 -size +3000k -exec ls -ld {} ;
如何用find查找某一天更改的文件?
可以使用这一行命令来实现:
A=`find ~ -print` | ls -l –full-time $A 2》/dev/null | grep ”Jun 27“ | grep 1998
使用find 命令查找某个时间段的shell怎么写。比如11点到12点的。thanks
创建一个脚本judgetime,内容如下:
ls -l $*|awk ‘{split($8,hour,”:“);if((hour[1]》23 || hour[1] 《 1)&&hour[1]《24)print}’
到要查找的目录下,运行
find 。/ -name ”*“ -exec judgetime {} ;
注意时间格式为24小时制。
thank you ,如果我要精确到分钟呢
touch -t 04241112 starttemp #精确到12分钟
touch -t 04241220 endtemp #截止到12点20
find [dir] -newer starttemp -a ! -newer endtemp -exec ls -l {} ;
newer?
那昨天12:10文件如何呢?
每天执行的时候,用当天的日期和时间戳替换一下不就行了吗?
我不知道他是不是把所有的11:00~12:00的都找出来,是不是只执行一次还是每天都执行?
这种情况俺猜想是自己的东西放在哪忘了,只记得当时是深夜了。
有道理!
不愧是斑竹!
不光知道怎么解决问题,还知道在什么情况下出现这类问题,佩服佩服!
问题又出现了。创建这个文件的时候。本来应该是时间的一栏现在写上了2002,而不是12:00.
等到12:00过了吧!
删除指定日期的文件
find 。/ -name 文件名 -exec rm -f {} ;
例:删除当前30天内没用过的文件,用如下命令:
find / -atime +30 -exec rm -f {} ;
我自己试着写了一小段SHELL,也用ll ,grep, rm 几个命令,用起来还差强人意。
对过滤出来的文件名列表中用了一个FOR语句,再执行rm 。现在我想把这段SHELL 扩展一下让它每天定时运行将 n 天前的文件删掉,有没有人能给我一些提示,谢谢!
还有个问题,对于前面那位朋友提到的”find / -atime +30 -exec rm -f {} ;
“方法,我很早就试过几次,不过好像都不太对,参数 -atime n 是查找n天前被访问过的文件,我不明白的是这里的时间参照点是什么,以及这个n天是怎么计算的。
问 题二、对于”ll |cut -f 1“ 这个命令我是不是用错了,我只想取出 ll 中列出的文件名,但用cut -f 命令做不到 ,我只好换用 ll |cut -c 59- 这种方式得到我要的文件名,but it’s a pool idear !我也试过用awk ,好像也不对,看看大家可不可以给我一些小小的提醒,TKS SO MUCH
问题三、如何改变 I结点 的日期格式 我现在的系统显示的格式是:
-rw-r—– 1 msahz01 users 2253 2002年2月 2日 poheader.i
我想把这换成
-rw-rw-rw- 1 house users 2193 Apr 19 2001 hkdisp.p
如何才能做到这点?
awk 应该可以
ll | awk ‘{print $9}’
删除多少天之前的文件
find /yourpath -mtime +31 -exec rm {} ;
find /yourpath -mtime +366 -exec rm {} ;
find中, -ctime, -mtime及其-atime有何区别
请问 -ctime 和 -mtime 有什么关系 ?
如果父目录的 ctime 改变, 那它下面的文件的 ctime 就会自动都改了吗 ?
-ctime 和 -mtime ,-atime 这些信息是存在哪儿呢 ?
我用 -mtime -1 找到了新建或改的文件。
但怎样才能找到一天内 mv 来的文件呢( 它们的时间是原有的时间,早于一天 ) ?
用-newer选项啊。
你可以先touch一个你想要的时间的文件如下:
$ touch -t 08190800 test
$ ls -l test
-rw-r–r– 1 dba other 0 Aug 19 08:00 test
然后
$ find 。 -newer test -print
。
。/.sh_history
$ ls -l .sh_history
-rw——- 1 dba other 154 Aug 20 17:39 .sh_history
用touch可以写出你想要的任何时间的文件,然后用-newer ,! -newer选项即可成功。
1.ctime含inode信息修改的时间.mtime只指文件内容建立或修改的时间。
2 不会。
3.这些信息应该是存在文件系统的超级块里。
我查了书 -ctime 是指 inode 的改变(或称文件的状态改变)。
请问 inode 存了哪些信息 ?
做了些小测试,-mtime 改, -ctime 一定也改。
改文件名, -ctime 也会改。
谁能回答 i-node 存了哪些东西 ?
vi /usr/include/sys/inode.h
班主,我不能 access /usr/include/sys/inode.h 。
摘书如下:
Directories contain directory entries. Each entry contains a file or subdirectory name and an index node reference number (i-node number)。 To increase speed and enhance use of disk space, the data in a file is stored at various locations in the computer’s memory. The i-node contains the addresses used to locate all the scattered blocks of data associated with a file. The i-node also records other information about the file including time of modification and access, access modes, number of links, file owner, and file type.
可我发现 -atime 改了, -ctime 还没改。 why ?
( 我先 cat 一个 ASCII 文件,再用 -atime -1 有它用 -ctime -1 居然没有它。)
着岂不跟 inode 信息改变, ctime 就改矛盾吗?
我不同意你贴出来的那段文章,正如我提到的那样,atime,ctime,mtime是放到超级块里,在sco unix下是一种叫stat的结构。(stat_32),不同的系统文件系统可能不同。
sco 下inode的结构如下:
typedef struct inode
{
struct inode *i_forw; /* inode hash chain */
struct inode *i_back; /* ‘’ */
struct inode *av_forw; /* freelist chain */
struct inode *av_back; /* ‘’ */
int *i_fsptr; /* ”typeless“ pointer to fs dependent */
ino32_t i_number; /* i number, 1-to-1 with dev address */
ushort i_ftype; /* file type = IFDIR, IFREG, etc. */
short i_fstyp; /* File system type */
off_t i_size; /* size of file */
ushort i_uid; /* owner */
ushort i_gid; /* group of owner */
ushort i_flag;
ushort i_want; /* i_flag extension to avoid MP races */
ushort i_count; /* reference count */
short i_nlink; /* directory entries */
dev_t i_rdev; /* Raw device number */
#define i_namtype i_rdev /* i_ftype==IFNAM subtype */
dev_t i_dev; /* device where inode resides */
struct mount *i_mton;/* ptr to mount table entry that */
/* this directory is mounted on */
struct region *i_rp; /* ptr to shared region if any */
struct stdata *i_sp; /* ptr to associated stream */
struct iisem *isem; /* ptr to XENIX semaphores */
struct iisd *isd; /* ptr to XENIX shared data */
} i_un;
#define i_mnton i_un.i_mton /* i_ftype==IFDIR IMOUNT */
#define i_rptr i_un.i_rp /* i_ftype==IFREG || i_ftype==IFBLK */
#define i_sptr i_un.i_sp /* i_ftype==IFCHR || i_ftype==IFIFO */
#define i_sem i_un.isem /* i_ftype==IFNAM && i_namtype==IFSEM */
#define i_sd i_un.isd /* i_ftype==IFNAM && i_namtype==IFSHD */
struct fstypsw *i_fstypp; /* ptr to file system switch FSPTR */
long *i_filocks; /* pointer to filock (structure) list */
unsigned long i_mappages; /* number of pages currently cached */
unsigned long i_vcode; /* read-ahead block save (NFS) */
short i_wcnt; /* write open count or ITEXT count */
struct lockb i_cilock; /* tas to synchronize i_flag changes */
ushort i_rdlocks; /* count of non-exclusive lockers */
} inode_t;
所以,访问一个文件不能改变inode信息。
使用chown, chgrp, chmod命令可以很好的比较mtime和ctime
chown改变一个文件的属主,用ctime可以找到,用mtime便找不到。
试试看。
多谢斑竹! 我是在 Solaris 上面试的。我是对 -ctime 不明白。
试的结果如下:
修改文件,-mtime 改了, -ctime 也会改。
访问文件,-atime 改了, -ctime 没变。
chown, chgrp, chmod,mv, 都会使 -ctime 改变,但不影响 -atime 和 -mtime.
touch 可以改 -mtime and/or -atime,但 touch -a 只改访问时间时,-ctime也改了。
touch -m 改修改时间时,-ctime当然也改了。
好象还有别的很多东西可以令 -ctime 改变, 搞不清楚。
有什么方法可以显示 -mtime,atime,ctime 吗?
可以用 -ctime 来实现对目录的增量文件进行备份或 transfer 吗 ?
多谢!
没有什么工具显示,(可能是俺不知道)
把下面程序里的st_mtime换成st_ctime,或st_atime便可以得到你要的了。
#include
int
main (int argc, char **argv)
{
struct stat buf;
char date[80];
char fname[80];
printf(”Enter filename (with full path) to check mtime : “);
scanf(”%s“,fname);
stat(fname, &buf);
printf (”mtime (in sec) of %s = %ld“, fname, buf.st_mtime);
strcpy(date, ctime((time_t *)&(buf.st_mtime)));
printf (”mtime (in date) of %s = %s“, fname, date);
}
至于文件备份,有什么不可以的么?
mtime ls -l 最近修改文件内容的时间
atime ls -lu 最近访问文件的时间
ctime ls -li 最近文件有所改变的状态 ,如文件修改,属性属主 改变 ,节点 ,链接变化等 ,应该是不拘泥只是时间前后的改变
俺看了ls的帮助,以为只是按ctime或atime排序,显示的时间还是mtime.
仔细比较了一下,ayhan说的是对的。谢谢ayhan.
多谢 ahyan 提示 ! 我在 Solaris 上试过如下:
mtime 用 ls -l 看到
atime 用 ls -lu 看到
ctime 用 ls -lc 看到。 (ls -li 只有 inode number)
摘书如下:
-c Uses time of last modification of the i-node (file
created, mode changed, and so forth) for sorting (-t)
or printing (-l or -n)。
-u Uses time of last access instead of last modification
for sorting (with the -t option) or printing (with the
-l option)。
-i For each file, prints the i-node number in the first
column of the report.
上面就是Linux下find命令的常见用法的介绍了,所有会使用到的find都有提到,初学者如果对find命令不熟悉的话,不妨来详细了解下find命令。
浏览量:5
下载量:0
时间:
Linux系统中查找文件的命令式find,find命令具有强大的功能,能够提供多种查找条件,下面读文网小编就给大家带来Linux中find命令的常见用法汇总,一起来学习下吧。
·find path -option [ -print ] [ -exec -ok command ] {} ;
find命令的参数;
pathname: find命令所查找的目录路径。例如用。来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为‘command’ { } ;,注意{ }和;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
#-print 将查找到的文件输出到标准输出
#-exec command {} ; —–将查到的文件执行command操作,{} 和 ;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
例:find 。 -name .svn | xargs rm -rf
====================================================
-name filename #查找名为filename的文件
-perm #按执行权限来查找
-user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查GIN: 0px“》
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio %; #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune #忽略某个目录
=====================================================
$find ~ -name ”*.txt“ -print #在$HOME中查.txt文件并显示
$find 。 -name ”*.txt“ -print
$find 。 -name ”[A-Z]*“ -print #查以大写字母开头的文件
$find /etc -name ”host*“ -print #查以host开头的文件
$find 。 -name ”[a-z][a-z][0–9][0–9].txt“ -print #查以两个小写字母和两个数字开头的txt文件
$find 。 -perm 755 -print
$find 。 -perm -007 -exec ls -l {} ; #查所有用户都可读写执行的文件同-perm 777
$find 。 -type d -print
$find 。 ! -type d -print
$find 。 -type l -print
$find 。 -size +1000000c -print #查长度大于1Mb的文件
$find 。 -size 100c -print # 查长度为100c的文件
$find 。 -size +10 -print #查长度超过期作废10块的文件(1块=512字节)
$cd /
$find etc home apps -depth -print | cpio -ivcdC65536 -o /dev/rmt0
$find /etc -name ”passwd*“ -exec grep ”cnscn“ {} ; #看是否存在cnscn用户
$find 。 -name ”yao*“ | xargs file
$find 。 -name ”yao*“ | xargs echo ”“ 》 /tmp/core.log
$find 。 -name ”yao*“ | xargs chmod o-w
======================================================
find -name april* 在当前目录下查找以april开始的文件
find -name april* fprint file 在当前目录下查找以april开始的文件,并把结果输出到file中
find -name ap* -o -name may* 查找以ap或may开头的文件
find /mnt -name tom.txt -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find /mnt -name t.txt ! -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find /tmp -name wa* -type l 在/tmp下查找名为wa开头且类型为符号链接的文件
find /home -mtime -2 在/home下查最近两天内改动过的文件
find /home -atime -1 查1天之内被存取过的文件
find /home -mmin +60 在/home下查60分钟前改动过的文件
find /home -amin +30 查最近30分钟前被存取过的文件
find /home -newer tmp.txt 在/home下查更新时间比tmp.txt近的文件或目录
find /home -anewer tmp.txt 在/home下查存取时间比tmp.txt近的文件或目录
find /home -used -2 列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find /home -user cnscn 列出/home目录内属于用户cnscn的文件或目录
find /home -uid +501 列出/home目录内用户的识别码大于501的文件或目录
find /home -group cnscn 列出/home内组为cnscn的文件或目录
find /home -gid 501 列出/home内组id为501的文件或目录
find /home -nouser 列出/home内不属于本地用户的文件或目录
find /home -nogroup 列出/home内不属于本地组的文件或目录
find /home -name tmp.txt -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层
find /home -name tmp.txt -mindepth 3 从第2层开始查
find /home -empty 查找大小为0的文件或空目录
find /home -size +512k 查大于512k的文件
find /home -size -512k 查小于512k的文件
find /home -links +2 查硬连接数大于2的文件或目录
find /home -perm 0700 查权限为700的文件或目录
find /tmp -name tmp.txt -exec cat {} ;
find /tmp -name tmp.txt -ok rm {} ;
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件
浏览量:3
下载量:0
时间:
find命令主要用于文件的查找,在之前的文章有过详细的介绍,今天读文网小编要给大家介绍的是Linux find命令和xargs命令的配合使用,一起来了解下吧。
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误
错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高; 而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
命令:
代码如下:
find / -name “core” -print | xargs echo “” 》/tmp/core.log
输出:
代码如下:
[root@localhost test]# find / -name “core” -print | xargs echo “” 》/tmp/core.log
[root@localhost test]# cd /tmp
[root@localhost tmp]# ll
总计 16
-rw-r--r-- 1 root root 1524 11-12 22:29 core.log
drwx------ 2 root root 4096 11-12 22:24 ssh-TzcZDx1766
drwx------ 2 root root 4096 11-12 22:28 ssh-ykiRPk1815
drwx------ 2 root root 4096 11-03 07:11 vmware-root
浏览量:3
下载量:0
时间:
今天小编给大家介绍下Linux系统的关机与重启命令,涉及的命令有shutdown、halt、reboot,也是本文主要讲解的命令,希望对正在学习的朋友有所帮助。
halt命令,可以相当于调用shutdown -h。
halt执行时,杀死应用进程,执行sync系统调用,文件系统写操作完成后就会停止内核。
halt命令的参数说明:
[-n] 防止sync系统调用﹐它用在用fsck修补根分区之后﹐以阻止内核用老版本的超级块〔superblock〕覆盖修补过的超级块。
[-w] 并不是真正的重启或关机﹐只是写wtmp〔/var/log/wtmp〕纪录。
[-d] 不写wtmp纪录〔已包含在选项[-n]中〕。
[-f] 没有调用shutdown而强制关机或重启。
[-i] 关机〔或重启〕前﹐关掉所有的网络接口。
[-p] 该选项为缺省选项。就是关机时调用poweroff。
浏览量:3
下载量:0
时间:
Linux tail命令主要用于把档案文件的最后几行显示到终端上,以确保能看到最新的内容,那么Linux tail要怎么用呢?下面读文网小编就给大家介绍下Linux tail的用法。
从指定点开始将文件写到标准输出。使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容。
tail 命令从指定点开始将File 参数指定的文件写到标准输出。如果没有指定文件,则会使用标准输入。Number 变量指定将多少单元写入标准输出。Number 变量的值可以是正的或负的整数。如果值的前面有+(加号),从文件开头指定的单元数开始将文件写到标准输出。如果值的前面有-(减号),则从文件末尾指定的单元数开始将文件写到标准输出。如果值前面没有+(加号)或-(减号),那么从文件末尾指定的单元号开始读取文件。
Number 变量用于确定计数的起点的单元类型由-b、-c、-k、-m 以及-n 标志确定。如果没有指定其中的任何一个标志,那么tail 命令就会读取指定文件的最后十行,并将其写到标准输出。这与在命令行输入-n 10 是相同的。
-m 标志在单字节和双字节字符环境中提供了一致的结果。当输入是包含多字节字符的文本文件时应谨慎使用-c 标志,因为产生的输出可能不从字符边界开始。
浏览量:3
下载量:0
时间:
单纯的了解Linux find命令是不够的,我们还要知道怎么使用它,下面小编从find的例子中给大家介绍下find的用法,希望对初学者能有所帮助。
让我们先从一个简单例子开始。
$ find / -name test
。/backup/ modules/field/modules/test
$
“查找根目录下名称为’test’的文件”, 这条命令会让系统查找所有文件, 包括挂载的文件设备。 这可能需要花费一段时间, 尤其是查找网络共享硬盘。 不过, 我们可以通过参数-mount告诉, 系统忽略挂载设备:
$ find / -mount -name test
find命令格式如下:
find [path] [options] [tests] [actions]
[path]
路径; 应该不难理解。 这里可以使用绝对路径, 也快成使用相对路径。
[options]
参数; 比较常用的参数用:
-depth: 先查找子目录再查看当前目录 -follow: 跟踪查找连接文件 -maxdepths N: 子目录递归最大深度 -mount(or -xdev): 忽略挂载文件
[tests]
条件匹配;
-atime -N/N/+N: 最后一次访问文件的时间在 N天内/N天/N天前 -mtime -N/N/+N: 最后一次修改文件的时间在 N天内/N天/N天前 -name pattern: 与pattern相匹配的文件(包括目录) -newer f1 !f2: 比文件f1新的文件, 比文件f2旧的文件 -type b/d/c/p/l/f: 文件类型为: 块设备/目录/字符设备/管道/链接/文件 -user username: 文件的所有者是username
我们可以通过以下操作符, 将匹配条件 连起来:
-not (!): 方向匹配 -and (-a): 而且 -or (-o): 或者
我们还可以通过括号将一些匹配符号合并。 例如
(-newer -o -name ‘*test’ )
现在举一个稍微有点复杂的例子, 查找当天被访问过或修改过的文件, 文件名包含’python’, 而起文件所有者是’anthony’:
# find / ( -atime -1 -or -mtime -1 ) -and -name ‘*python*’ -and -user ‘anthony’
/home/anthony/svn_code/subversion-1.7.2/subversion/bindings/swig/python
/home/anthony/svn_code/subversion-1.7.2/subversion/bindings/ctypes-python
/home/anthony/python
/home/anthony/python/Python-3.2.2/build/temp.linux-x86_64-3.2/home/anthony/python
/home/anthony/python/Python-3.2.2/Tools/unicode/python-mappings
/home/anthony/.local/lib/python3.2
#
[actions]
操作;
-exec command: 执行命令, 具体介绍见后文。 -ok command: 和-exec一样, 除了命令执行需要用户许可。 -print: 打印文件名 -ls: 列出文件详细信息
现在举例说明-exec command
anthony@z:~$ find -mtime -1 -type f -exec ls -l {} ;
-rw-r--r-- 1 anthony anthony 0 Apr 5 12:04 。/search/search.txt
-rw------- 1 anthony anthony 22997 Apr 5 12:04 。/.viminfo
-rw------- 1 anthony anthony 125 Apr 5 14:25 。/.lesshst
anthony@z:~$
简单地说, -exec或-ok, 将查询到的文件作为参数传递给后面的命令执行, 而参数的位置用{}标识, 即命令中, “{}”替换成find查找出来的文件名, 最后”;”表示结束符。
上面就是Linux find命令的介绍了,从例子中学习find命令效果会比看理论知识会好的多,对于初学者来说,多看例子多动手是很有必要的。
浏览量:3
下载量:0
时间:
作为一种分时的特数操作系统,Linux具备Windows和mac OS与众不同的操作界面和用户体验,虽然它并不是最主流的操作系统,但是它会作为操作系统而得到众多程序开发人员的青睐和熟知。find命令是操作系统环境下进行计算机功能调用的特殊命令,顾名思义,它的作用就是查找,比如查找一些特定的文件。那么Linux环境下的find命令该如何使用呢?读文网小编来告诉大家。
和众多命令相同,如果想要查询不同的文件,就需要使用不同类型的查询参数才能实现。Find命令的查询参数如下:
pathname: find 这个参数能够根据文件的路径进行文件查找,一般来说.表示当前目录路径,/表示系统根目录路径。
-print:使用这个命令进行查找系统会将匹配的文件输出至标准的输出方式显示。
-exec:若使用这个参数进行文件查找,系统会进行特殊的shell命令执行,这个shell命令是参数给出的。
-ok:这个参数的功能和-exec具有相似的查询效果,不过它会给查询增加安全性,并在每一个执行步骤之前给出提示。
浏览量:2
下载量:0
时间:
学过Linux命令的都知道,find命令可用于查找目录文件,今天读文网小编要给大家介绍的是如何使用find命令进行Linux日志的定期迁移,有兴趣的朋友不妨来了解下吧。
linux系统中,使用find命令定期迁移linux日志的方法。
-name:按照文件名进行查找
-perm:按文件权限来查找
-user:按文件的用户主查找
-group:按文件的用户组查找
-type:查找某一类型的文件
b -- 块设备文件
d -- 目录
c -- 字符设备文件
p -- 管道文件
l -- 符号链接文件
f -- 普通文件
-mtime:按照文件的更改时间来查找文件
-n -- 表示文件更改时间距现在n天以内
+n -- 表示文件更改时间距现在n天以前
浏览量:2
下载量:0
时间:
在进行Linux命令操作的时候,有时会搜索出许多目录,而这些目录又不是我们所需要的,这时就可以将其忽略。下面读文网小编就教大家如何使用find命令忽略子目录。
使用find命令在linux系统中查找文件时,有时需要忽略某些目录,可以使用 -prune 参数来进行过滤。
不过必须注意:要忽略的路径参数要紧跟着搜索的路径之后,否则该参数无法起作用。
例如:指定搜索/home/zth目录下的所有文件,但是会忽略/home/zth/astetc的路径:
代码如下:
find /home/zth -path “/home/zth/astetc” -prune -o -type f -print
按照文件名来搜索则为:
代码如下:
find /home/zth -path “/home/zth/astetc” -prune -o -type f -name “cdr_*.conf” -print
要忽略两个以上的路径如何处理?
代码如下:
find /home/zth /( -path “/home/zth/astetc” -o -path “/home/zth/etc” /) -prune -o -type f -print
find /home/zth /( -path “/home/zth/astetc” -o -path “/home/zth/etc” /) -prune -o -type f -name “cdr_*.conf” -print
注意:/( 和/) 前后都有空格。
查找某个文件包含内容,以下语句可以解决目录带空格的问题:
代码如下:
find 。/ -name “mysql*” -print0 |xargs -0 grep “SELECT lead_id FROM vicidial_list where vendor_lead_code”
如果目录不带空格,可以这样:
代码如下:
find 。/ -name “mysql*” |xargs grep “SELECT lead_id FROM vicidial_list where vendor_lead_code”
上面就是Linux下使用find命令查找文件时忽略子目录的方法介绍了,如果你需要用到相关操作,而又对find命令的使用不是很熟悉的话,不妨来了解下本文,希望对你有所帮助。
浏览量:2
下载量:0
时间:
读文网小编将介绍passwd命令的几种用法。首先读文网小编介绍下passwd命令的解释。
passwd 作为普通用户和超级权限用户都可以运行,但作为普通用户只能更改自己的用户密码,但前提是没有被root用户锁定;如果root用户运行passwd ,可以设置或修改任何用户的密码。
首先我们执行命令 passwd 则更改当前登录用户本身的密码。
如下图所示我们使用管理员登录,修改root账户的密码。
第二条命令必须在管理员权限登录下,执行。命令格式为passwd +要修改的用户的名称。设置其他用户的密码。
第三条命令,在普通用户或者管理员用户登录情况下,执行命令passwd -S。查看当前用户的密码状态。
可以看到返回结果为:root P 10/27/2015 0 99999 7 -1。我们对各个字段进行解释。
root(第一个字段):用户名称。
P(第二个字段):该字段默认显示为密码的状态,在debian系统下有三种状态:NP 代表无密码,P代表已经设置密码,L代表密码锁定状态。
10/27/2015(第三个字段):代表上次修改密码的时间。
后面4个字段分别代表密码能更改的最小期限和最大期限,警告期限和没有使用该口令的时长。
备注:在管理员权限下可执行命令:passwd -S+用户名,查看该用户的密码状态。
第4条命令。在管理员权限下执行。passwd -Sa 查看系统内所有用户的密码状态。如下图所示显示debian系统下所有用户的密码状态。
第5条命令,在管理员权限下执行。执行命令为passwd -d+用户名称,意思为删除用户密码。
本篇中我们在root登录情况下,删除test用户的密码。然后切换到test下,执行passwd -S查看密码状态。
第6条命令,在管理员权限下执行。执行命令为passwd -l +用户名称。
意思为锁定用户密码。执行后,该用户登录系统后,不能更改自己的密码了。
第7条命令,在管理员权限下执行,执行命令为:passwd -u +用户名称。意思为解锁用户密码。
浏览量:3
下载量:0
时间:
欢迎来到读文网,本文介绍Linux系统mknod命令用法 ,欢迎您阅读。
mknod 用法:
名字
mknod - 建立块专用或字符专用文件
总览
mknod [options] name {bc} major minor
mknod [options] name p
GNU 选项(缩写):
[-m mode] [--help] [--version] [--]
描述
mknod 用指定名称产生一个FIFO(命名管道),字符专用或块专用文件。
文件系统中的一个专用文件存贮着三种信息(布朗型、整型、整型)。布朗型在字符文件与块文件之间作出选择,两个整型是主、次设备号。
通常,一个专用文件并不在磁盘上占用空间,仅仅是为操作系统提供交流,而不是为数据存贮服务。一般地,专用文件会指向一个硬件设备(如:磁盘、磁带、打印机、虚拟控制台)或者操作系统提供的服务(如:/dev/null, /dev/random)。
块文件通常类似于磁盘设备(在数据可以被访问的地方赋予一个块号,意味着同时设定了一个块缓存)。所有其他设备都是字符文件。(以前,两种文件类型间是有差别的。比如:字符文件I/O没有缓存,而块文件则有。)
mknod命令就是用来产生这种类型文件的。
以下参数指定了所产生文件的类型:
p FIFO型
b 块文件
c 字符文件
GNU版本还允许使用u(‘unbufferd‘非缓冲化),以保持与C语言的一致。
当创建一个块文件或字符文件时,主、次设备号必须在文件类型参数后给出。(十进制或八进制以0开头;GNU 版本还允许使用以0x开头的十六进制)缺省地,所产生的文件模式为0666(‘a+rw‘)。
选项
-m mode, --mode=mode 为新建立的文件设定模式,就象应用命令chmod一样,以后仍然使用缺省模式建立新目录。
1 3 是主设备号1,次设备号3 .
浏览量:2
下载量:0
时间:
(一)options
-d,-depth:二者作用相同,man手册和很多博客上都说它们的作用是:首先查找当前目录文件,然后再在其子目录查找。不过我自己实验了很多次,发现没什么效果。。。烦请高人指点~
-maxdepth:指定最大目录深度,也就是指定目录的几级子目录:1代表只是指定目录本身;2表示一级子目录;3代表“孙目录”,以此类推。。。
m@meng:~/patches/tmp$ find . -maxdepth 1 -name 'onlyme*'
./onlyme
./onlyme1
m@meng:~/patches/tmp$ find . -maxdepth 2 -name 'onlyme*'
find . -maxdepth 2 -name 'onlyme*'
./test/onlyme5
./test/onlyme.sh
./onlyme
./onlyme1
-mindepth:类似上面的-maxdepth,但是指定的是最小深度。比如指
定 2,那就是只搜索深度大于2的各级子目录,而不理会小于2的那些目录(小于2的就是指定目录本身),如下例: m@meng:~/patches/tmp$ find . -mindepth 1 -name 'onlyme*'
./test/onlyme5
./test/onlyme.sh
./onlyme
./onlyme1
m@meng:~/patches/tmp$ find . -mindepth 2 -name 'onlyme*'
./test/onlyme5
./test/onlyme.sh
-help:显示帮助信息,并退出。 -mount或-xdev:如果某个(子)目录是另一个文件系统的挂载点,则跳过该目录。
-daystart:先看man手册的说法:Measure times (for -amin, -atime, -cmin, -ctime, -mmin, and -mtime) from the beginning of today rather than from24 hours ago. 看来这个选项只影响那些跟时间有关的test,而且改变了时间的计算方式,即不再从当前时刻开始计算,而是从每天的0:00开始计算。前面说过,-atime n,这个n并不代表实际的“一天”,而是指24小时;但是加上-daystart这个选项之后,就可以真的代表“一天”了,因为这时就是从每天的0:00开始计时的,看下面的例子:
m@meng:~/patches/tmp$ date
2015年 07月 12日 星期日 00:13:47 CST
m@meng:~/patches/tmp$ stat new
最近访问:2015-07-12 00:10:15.707908310 +0800
最近更改:2015-07-12 00:10:15.707908310 +0800
最近改动:2015-07-12 00:10:15.707908310 +0800
m@meng:~/patches/tmp$ stat test
最近访问:2015-07-11 23:42:25.064527595 +0800
最近更改:2015-07-06 23:57:45.095385673 +0800
最近改动:2015-07-06 23:57:45.095385673 +0800
m@meng:~/patches/tmp$ find -atime 0
.
./test
./new
m@meng:~/patches/tmp$ find -daystart -atime 0
.
./new
这就很显然了,在没有加上-daystart这个选项之前,-atime 0指的是从当前这一刻开始,往前的24小时之内,如果某个文件被访问过,则匹配;但是加上-daystart之后,-atime 0表示今天被访问过的文件才会匹配。同理-atime 1表示昨天(即7/11 0:00 ~ 7/11 23:59)被访问过的文件才会匹配。
这个选项的作用可以简单归纳为:化零为整。
(二)actions
-delete:找到匹配的文件之后,将其删除。man手册上提到:Use of -delete automatically turns on the -depth option,不过我还没搞懂这个-depth到底有什么卵用。。 -print:这个是默认的action,即没有指定任何action的时候其实就是使用了这个-print,但是指定了另一个action的时候,就必须显式加上-print才有效果。它把每个匹配的文件打印到标准输出上,每行一个文件。这意味着,-print在打印的时候,每个文件末尾添加了一个换行符。
但是这个换行符是为了浏览方便,有时会造成一些麻烦,比如使用管道的时候;如果想省略这个换行符,可以用-print0来代替,如下: m@meng:~/patches/tmp$ find -daystart -atime 0 -print
.
./new
m@meng:~/patches/tmp$ find -daystart -atime 0 -print0
../newm@meng:~/patches/tmp$
所以,如果只是想在终端观察输出,没有必要使用-print0,-print就足够了。
-print还有一个变种是-printf,类似于C语言中的printf函数,进行格式化输出,暂时不研究了,有太多格式。
-ls:类似于ls命令的-dils选项组合,如下: m@meng:~/patches/tmp$ find -daystart -atime 0 -ls
7478778 4 drwxrwxr-x 3 m m 4096 7月 12 00:10 .
7478967 0 -rw-rw-r-- 1 m m 0 7月 12 00:10 ./new
m@meng:~/patches/tmp$ ls -dils new
7478967 0 -rw-rw-r-- 1 m m 0 7月 12 00:10 new
换了一种更详细的输出而已。
f系列,即-(fls/fprint/fprint0/fprintf) file,这几个action与没有开头f的那几个action是非常相似的,只是不再把结果打印到标准输出,而是输出到文件file中。
-exec command ;与-exec command {} +
-exec本身其实只是在find执行完之后执行另一条命令,我之前以为-exec类似于管道,find找到的文件会直接被command处理,结果不是这样;若想要达到管道的效果,需要在 command后面添加“{}”,它代表前面找到的文件。
然后是语法问题:command后面没有“{}”时,必须要以一格空格和一个分号结尾;command后面有“{}”时,可以使用前面那种结尾方式,也可以使用一个空格和一个“+”结尾;
为了防止shell本身的扩展,分号需要转义,要么前面添加反斜线,要么用引号括起来;同理“{}”最好也用引号保护起来。
m@meng:~/patches/tmp$ find . -name new -print -exec cat onlyme1 ;
./new
haha
m@meng:~/patches/tmp$ find . -name new -print -exec cat onlyme1 +
find: 缺少“-exec”参数
m@meng:~/patches/tmp$ find . -name new -print -exec cat {} ;
./new
hello
m@meng:~/patches/tmp$ find . -name new -print -exec cat {} +
./new
hello
m@meng:~/patches/tmp$ find . -name new -print -exec cat {} ';'
./new
hello
m@meng:~/patches/tmp$ find . -name new -print -exec cat {} ";"
./new
hello
第一个例子说明command和find之间可以是完全独立的;第二个说明command后面没有“{}”时只能以分号结尾;后面几个例子说明了有“{}”时的结尾情况。
-execdir command ;和-execdir command {} +
与上一对选项类似,只是-exec后面的command是在当前目录执行的;而-execdir是在匹配文件所在子目录中执行的。我们使用pwd命令测试一下:m@meng:~/patches/tmp$ ls
magic.mgc new onlyme onlyme1 test
m@meng:~/patches/tmp$ ls test/
onlyme5 onlyme.sh
m@meng:~/patches/tmp$ find . -name onlyme.sh -exec pwd ;
/home/m/patches/tmp
m@meng:~/patches/tmp$ find . -name onlyme.sh -execdir pwd ;
/home/m/patches/tmp/test
文件onlyme.sh在子目录test中,find在找到它之后执行pwd命令;但是-exec和-execdir的结果是不同的。
-ok与-okdir
与-exec和-execdir是基本相同的,只是在执行之前会先询问一下用户。 -prune
if the file is a directory, do not descend into it. 就是说,如果某个目录匹配了,那么就不再进入这个目录进行搜索。m@meng:~/patches/tmp$ find . -name 'test*'
./test
./test/test1
m@meng:~/patches/tmp$ find . -name 'test*' -prune
./test
我们看到,匹配 -name ‘test*’的包括test子目录本身以及test目录下的test1文件;但是加上-prune选项之后,就不在进入到test目录中进行搜索了,因为test目录本身也是一
个匹配项。-prune经常配合-path用来排除某些子目录。
-quit
立即退出,-quit之后的命令将不再执行。如下:m@meng:~/patches/tmp$ find . -name new -print -exec cat {} ";"
./new
hello
m@meng:~/patches/tmp$ find . -name new -print -quit -exec cat {} ";"
./new
m@meng:~/patches/tmp$ find . -name new -print -exec cat {} ";" -quit
./new
hello
m@meng:~/patches/tmp$ find . -name new -quit -print -exec cat {} ";"
m@meng:~/patches/tmp$
(三)逻辑运算
先扔一段man手册的信息:
The expression is made up of options (which affect overall operation rather than the processing of a specific file, and always return true),tests
(which return a true or false value), and actions (which have side effects and return a true or false value), all separated by operators.
-and is assumed where the operator is omitted.
If the expression contains no actions other than -prune, -print is performed on all files for which the expression is true.
这就是说,expression的三个组成部分其实都是布尔表达式,而表达式都是有值的,不是true就是false。手册说,options的值永远是true;而其他两者的值可true可false。
这样,就会有逻辑运算,其实主要是test之间的运算,因为一个expression里面可以有多个test,这些test之间可以进行与、或、非运算。
比如上篇文章中的例子:
m@meng:~/patches$ find . -path ./tmp -o -name onlyme
./tmp
./tmp/onlyme
至此,find命令的基本用法完毕~好累。上面的总结肯定有不完善的地方,我会再以后慢慢补充慢慢纠正的。
浏览量:2
下载量:0
时间:
我们都知道Linux下查找文件的命令是find命令,运用该命令可以很快的搜到自己想要的文件,那么find命令有哪些使用技巧呢?下面小编就给大家介绍下Linux中find命令的巧妙运用。
find命令的工作方式是沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。
代码如下:
[root@localhost tmp]# find 。 -type f -perm 644
#查找当前目录权限为644的文件
[root@localhost tmp]# find 。 -type f -user reed
#查找当前目录文件所有者为reed的文件
浏览量:2
下载量:0
时间:
我们都知道,Linux命令加上不同的参数其效果也不同,下面读文网小编将针对Linux fing命令中的-exec 参数给大家做个详细介绍,以便你有个了解。
命令:
find 。 -type f -exec ls -l {} ;
输出:
代码如下:
[root@localhost test]# find 。 -type f -exec ls -l {} ;
-rw-r--r-- 1 root root 127 10-28 16:51 。/log2014.log
-rw-r--r-- 1 root root 0 10-28 14:47 。/test4/log3-2.log
-rw-r--r-- 1 root root 0 10-28 14:47 。/test4/log3-3.log
-rw-r--r-- 1 root root 0 10-28 14:47 。/test4/log3-1.log
-rw-r--r-- 1 root root 33 10-28 16:54 。/log2013.log
-rw-r--r-- 1 root root 302108 11-03 06:19 。/log2012.log
-rw-r--r-- 1 root root 25 10-28 17:02 。/log.log
-rw-r--r-- 1 root root 37 10-28 17:07 。/log.txt
-rw-r--r-- 1 root root 0 10-28 14:47 。/test3/log3-2.log
-rw-r--r-- 1 root root 0 10-28 14:47 。/test3/log3-3.log
-rw-r--r-- 1 root root 0 10-28 14:47 。/test3/log3-1.log
[root@localhost test]#
说明:
上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用ls -l命令将它们列出。
浏览量:2
下载量:0
时间:
Linux中的less命令主要用来浏览文件内容,与more命令的用法相似,不同于more命令的是,less命令可往回卷动浏览以看过的部分,下面随读文网小编一起来了解下less命令的具体用法吧。
less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
浏览量:2
下载量:0
时间:
作为一种分时的特数操作系统,Linux具备Windows和mac OS与众不同的操作界面和用户体验,虽然它并不是最主流的操作系统,但是它会作为操作系统而得到众多程序开发人员的青睐和熟知。find命令是操作系统环境下进行计算机功能调用的特殊命令,顾名思义,它的作用就是查找,比如查找一些特定的文件。那么Linux环境下的find命令该如何使用呢?
1.命令格式
熟悉程序开发的人们都应当知道,一个命令如果没有格式或格式错误那就无法实现本身的功能。find命令的标准格式为:find pathname -options [-print -exec -ok ...]。
2.命令功能
Find命令的主要功能就是能够在庞杂的文件树中查找具有特定特征的文件,并进行相关的处理和操作。
3.命令选项
命令选项是根据不同的选择条件进行文件查询,如文件的文件名、权限等条件,Linux环境下find的命令选项如下所示(部分):
-name 此命令根据文件的文件名进行文件查询,一般也是最长使用的一个命令。
-perm 此命令根据文件的不同权限进行文件查询,如具备管理员权限和不具备管理员权限的文件查询。
-user 这个命令会更具文件具备的不同属主进行文件查询。
-group 此命令是根据文件属于的组类型进行查询,当然,一般来说使用这个进行查询的是想要查询多个文件。
-mtime -n +n 根据文件的修改时间进行文件查询,比如,假如你在昨天19点更改过文件的名称或格式或其他信息,这时候就能够根据这个命令查询到此文件。
-type 根据文件的类型进行查找,比如,管道文件、设备文件、普通文件等,不同的文件根据不同的字母进行区分
Find命令作为文件查询中的重要手段,在计算机界有很大的实用性,Linux强大的操作性能中使用find文件往往能够非常便捷,因此,熟悉find在Linux中的使用方法是文件查询的重要内容。
4.命令参数
和众多命令相同,如果想要查询不同的文件,就需要使用不同类型的查询参数才能实现。Find命令的查询参数如下:
pathname: find 这个参数能够根据文件的路径进行文件查找,一般来说.表示当前目录路径,/表示系统根目录路径。
-print:使用这个命令进行查找系统会将匹配的文件输出至标准的输出方式显示。
-exec:若使用这个参数进行文件查找,系统会进行特殊的shell命令执行,这个shell命令是参数给出的。
-ok:这个参数的功能和-exec具有相似的查询效果,不过它会给查询增加安全性,并在每一个执行步骤之前给出提示。
浏览量:2
下载量:0
时间:
今天读文网小编给大家介绍下Linux常用命令用法100个~让使用Linux系统的新用户能得到帮忙。
1,echo "aa" > test.txt 和 echo "bb" >> test.txt //>将原文件清空,并且内容写入到文件中,>>将内容放到文件的尾部
2,chmod go+w -R /home/zhangy //给组用户和其他用户添加写的权限
3,tar -tzvf test.tar.gz //列出归档内容
4,du -ah //查看文件列表大小
5,du -sh //查看所有文件的大小总和
6,echo '1+2'|bc -l //数学运算
7,uname -a //查看linux内核等的一些信息
8,badblocks -s /dev/sda //坏道扫描时显示进度
9,time command //查看命令的运行时间
10,ls -lrt //按时间的倒序排序
11,rsync -P //同步时显示进度
12.history -c //清楚历史命令
13,cd - //返回上次目录
14,tree //显示目录树
15,umount -n /mnt/hda2 //强制卸载
16,echo ~/ //显示用户的home目录
17,echo $[5*5] //算术运算
18,echo $((5*5)) //算术运算
19,eval ls;ps aux|grep httpd //这二个命令都能执行
20,free -m //有MB为单位显示内存
21,uptime //显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载
22,加法运算
[root@krlcgcms01 mytest]# let a=34+3;
[root@krlcgcms01 mytest]# echo $a;
23,export //查看所有环境变量
24,echo $PATH //查看单个变量
25,cmp file1 file2 //文件内容比对
26,clear //清屏
27,echo 23423 |awk --re-interval '/[0-9]{3,}/' //如果不加re-interval的话,不显示
28,cal //得到一个整齐的日历格式
29,wc -l //统计行数,wc -w 统计单词
30,echo "AaDCbd23" |tr "[A-Z]" "[a-z]" 大写变小写,echo "AaDCbdc23" |tr -c b-d = 将b-d之外的字符串替换成=
31,echo "ADSF" | iconv -f UTF8 -t GBK //把字符由utf8转成gbk -f是from和简写,-t好像terminal的简写
32,cat -n file //内容的前面会显示行号
33,chattr +i file //只读,root用户也没法对其进行修改
34,lsattr file //查看文件属性
35,cat /etc/passwd |awk -F: '{print $1}' //查看系统中所有用户
36,cat /etc/group //查看系统中所有的组
37,groups //查前当前用户所在的,所有组
38,usermod -g 组名 用户 //这种方式是覆盖的方式,用的时候要小心,如果用户A性于mysql usermod -g php mysql这样的话只
属于php了,
39,usermod -G 组名 用户 //这种方式是增加的方式,如果用户A性于mysql usermod -g php mysql这样的话,mysql就属于2个组了
40,bc //进入数学计算中去
41,umask 003 u权限是7,g权限是7,其他用户是4,也就是774,777-003=774
42,mkfs -t vfat /dev/hda6 //将移动硬盘里面的一个分区格式化成vfat格式
43,mount /dev/cdrom /media/cdrom //挂载cdrom
44,getent group 532 //通过组ID,来查找组信息
45,last //登录成功用户记录
46,lastb //登录不成功用户记录
47,dump -S /dev/sda2 //查看一下要备份/dev/sda2所要的容量
48,dump -0j -f /dev/hda2/sda2_bak.dump.bz2 /dev/sda2 //将sda2进行备份并压缩
49,restore -t -f /dev/hda2/sda2_bak.dump //查看备份信息
50,restore -r -f /dev/hda2/sda2_bak.dump //还原备份
51,fc-list //查看系统中安装的字体
52,find ./ -type f -exec grep -q "root" {} ; -exec echo {} ; //查找目录下文件所包涵的字符串
53,vmstat 5 //每5显示一下次系统信息,cpu,memory,i/o等
54,top 后 在shift + P 所占进程的排序显示
55,top 后 在shift + M 所占内存的排序显示
56,iptraf -g //查看各个接口的流量
57,ostat -d -x /dev/sda2 2 //用iostat查看磁盘/dev/sda2的磁盘i/o情况,每两秒刷新一次
58, paste -sd '|||n' test //文件的每4行转换成1行,并用|隔开。
59,lsof -i :22 //知道22端口现在运行什么程序
60,lsof -c abc //显示abc进程现在打开的文件
61,lsof -p 12 //看进程号为12的进程打开了哪些文件
63,route //查看路由信息
64,ifup //开启网卡
65,ifdown //关闭网卡
66,route del -net 172.168.0.0 netmask 255.255.0.0 dev eth0 //删除 172.168这个网段
67,route add -net 172.168.10.0 netmask 255.255.255.0 dev eth0 //增加一个路由
68,netstat -tunl //列出监听的网络服务端口
69,netstat -tun //列出已连接的网络服务端口
70,nmap -sP 172.30.4.0/24 //在这个网段内有多少用户在我的主机上操作,一个不错的安全检查工具
71,vgdisplay //查看系统中的可用空间
72,lvextend -L+20G /dev/tank/part1 //向part1这个分区增加20G的空间
73,lvresize -L-10G /dev/tank/part2 //向part2这个分区减少10G的空间
74,pvdisplay //查看磁盘信息
75,mplayer -loop 10 /mnt/song/music/花儿开了.mp3 //循环播放10遍
76,pacman -S firefox -nd //nd去掉依赖
77,wget -c //断点下载
78,chroot /mnt/ubuntu //改变根目录到/mnt/ubuntu
79,ctrl+a //命令行下,光标称动到开头
80,ctrl+e //命令行下,光标移动结尾
81,cut -d: -f 1-4 test //用:分割文件,取分割后的1-4列
82,file /home/zhangy/test.php //用于查看文件的一些基本信息
83,touch test.txt //创建一个空文件 text.txt
84,htpasswd -cbd /usr/local/nginx/conf/authfile //创建访问控制文件
85,df //查看磁盘空间,和当前的磁盘数
86,fdisk -l //查看所有磁盘数
87,alsamixer //进入后,m键可以实现静音
88,killall httpd //把所有httpd进程杀掉
89,killall -9 mysqld_safe //有些进程超级用户也停止不了,-9是强制删除
90,mirror /mysql //下载mysql目录
91,mirror -R /mysql //上传mysql目录
92,rmmod pcspkr //关掉tab提示音
93,modprobe pcspkr //开启tab提示音
94,gpasswd -a zhangy wheel //将zhangy这个用户添加到wheel这个组
95,dd if=/dev/zero of=/virtual/ubuntu.virt.img bs=1M count=4096 //创建一个4G的IMG镜像
96,lspic //显示pci设备
97,lsusb //显示usb设备
98,history | less //less根more有点像,感觉less用着更舒服点
99,ln -s //如果忘了-s就变成硬链接了
100,tar zxvf test.tar.gz -C /home/zhangy //将内容解压到指定目录
浏览量:2
下载量:0
时间: