15个实用的Linux find命令示例

除了在一个目录结构下查找文件这种基本的操作,你还可以用find命令实现一些实用的操作,使你的命令行之旅更加简易。

本文将介绍15种无论是于新手还是老鸟都非常有用的Linux find命令。

首先,在你的home目录下面创建下面的空文件,来测试下面的find命令示例。

# vim create_sample_files.sh

touch MybashProgram.sh

touch mycprogram.c

touch MyCProgram.c

touch Program.c

mkdir backup

cd backup

touch MybashProgram.sh

touch mycprogram.c

touch MyCProgram.c

touch Program.c

# chmod +x create_sample_files.sh

# ./create_sample_files.sh

# ls -R

.:

backup MybashProgram.sh MyCProgram.c

create_sample_files.sh mycprogram.c Program.c

./backup:

MybashProgram.sh mycprogram.c MyCProgram.c Program.c

1. 用文件名查找文件

这是find命令的一个基本用法。下面的例子展示了用MyCProgram.c作为查找名在当前目录及其子目录中查找文件的方法。

# find -name "MyCProgram.c"

./backup/MyCProgram.c

./MyCProgram.c

2.用文件名查找文件,忽略大小写

这是find命令的一个基本用法。下面的例子展示了用MyCProgram.c作为查找名在当前目录及其子目录中查找文件的方法,忽略了大小写。

# find -iname "MyCProgram.c"

./mycprogram.c

./backup/mycprogram.c

./backup/MyCProgram.c

./MyCProgram.c

3. 使用mindepth和maxdepth限定搜索指定目录的深度

在root目录及其子目录下查找passwd文件。

# find / -name passwd

./usr/share/doc/nss_ldap-253/pam.d/passwd

./usr/bin/passwd

./etc/pam.d/passwd

./etc/passwd

在root目录及其1层深的子目录中查找passwd. (例如root — level 1, and one sub-directory — level 2)

# find -maxdepth 2 -name passwd

./etc/passwd

在root目录下及其最大两层深度的子目录中查找passwd文件. (例如 root — level 1, and two sub-directories — level 2 and 3 )

# find / -maxdepth 3 -name passwd

./usr/bin/passwd

./etc/pam.d/passwd

./etc/passwd

在第二层子目录和第四层子目录之间查找passwd文件。

# find -mindepth 3 -maxdepth 5 -name passwd

./usr/bin/passwd

./etc/pam.d/passwd

4. 在find命令查找到的文件上执行命令

下面的例子展示了find命令来计算所有不区分大小写的文件名为“MyCProgram.c”的文件的MD5验证和。{}将会被当前文件名取代。

find -iname "MyCProgram.c" -exec md5sum {} \;

d41d8cd98f00b204e9800998ecf8427e ./mycprogram.c

d41d8cd98f00b204e9800998ecf8427e ./backup/mycprogram.c

d41d8cd98f00b204e9800998ecf8427e ./backup/MyCProgram.c

d41d8cd98f00b204e9800998ecf8427e ./MyCProgram.c

5. 相反匹配

显示所有的名字不是MyCProgram.c的文件或者目录。由于maxdepth是1,所以只会显示当前目录下的文件和目录。

find -maxdepth 1 -not -iname "MyCProgram.c"

.

./MybashProgram.sh

./create_sample_files.sh

./backup

./Program.c

6. 使用inode编号查找文件

任何一个文件都有一个独一无二的inode编号,借此我们可以区分文件。创建两个名字相似的文件,例如一个有空格结尾,一个没有。

touch "test-file-name"

# touch "test-file-name "

[Note: There is a space at the end]

# ls -1 test*

test-file-name

test-file-name

从ls的输出不能区分哪个文件有空格结尾。使用选项-i,可以看到文件的inode编号,借此可以区分这两个文件。

ls -i1 test*

16187429 test-file-name

16187430 test-file-name

你可以如下面所示在find命令中指定inode编号。在此,find命令用inode编号重命名了一个文件。

find -inum 16187430 -exec mv {} new-test-file-name \;

# ls -i1 *test*

16187430 new-test-file-name

16187429 test-file-name

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/19183.html