Linux fing cd 查找文件/文件夹并进入目录命令

查找文件|文件夹并进入目录命令:cd $()
[root@localhost /]# cd $(dirname "`find / -name 'ifcfg-ens33'`") //查找ifcfg-ens33文件并进入该文件所在目录
[root@localhost network-scripts]#
[root@localhost /]# mkdir -p /etc/sysconfig/network-scripts/kings-dev
[root@localhost ~]# cd $(dirname "`find / -name 'kings-dev'`") //查找kings-dev文件夹并进入该文件夹上层目录
[root@localhost network-scripts]#
[root@localhost ~]# cd $(find / -name 'kings-dev') //查找kings-dev文件夹并进入该文件夹目录
[root@localhost kings-dev]#
[root@localhost src]# du -alh
1.9M ./redis-5.0.5.tar.gz
1.9M .
[root@localhost src]# cd $(dirname `tar -zxvf redis-5.0.5.tar.gz`) //解压redis-5.0.5.tar.gz进入解压目录
[root@localhost redis-5.0.5]#

总结
cd $(dirname "`find / -name '*file or dirname'`") //查找xxxx文件并进入该文件所在目录或文件夹并进入该文件夹上层目录
cd $(find / -name 'dirname') //查找xxxx文件夹并进入该文件夹目录

cd $(dirname "`tar -zxvf xxxx.tar.gz`")           //方式1:解压源文件进入解压目录通用

cd $(dirname `tar -zxvf xxxx.tar.gz`)             //方式2:解压源文件进入解压目录通用

cd $(dirname "$(tar -zxvf xxxx.tar.gz)")          //方式1-2:解压源文件进入解压目录通用

cd $(dirname $(tar -zxvf xxxxtar.gz))             //方式2-2:解压源文件进入解压目录通用

[root@localhost src]# cd $(dirname "`tar -zxvf apache-tomcat-8.5.46.tar.gz`")
[root@localhost conf]# pwd
/usr/local/src/apache-tomcat-8.5.46/conf

[root@localhost src]# cd $(dirname `tar -zxvf apache-tomcat-8.5.46.tar.gz`)
[root@localhost apache-tomcat-8.5.46]# pwd
/usr/local/src/apache-tomcat-8.5.46

[root@localhost src]# cd $(dirname "`tar -zxvf redis-5.0.5.tar.gz`")
[root@localhost redis-5.0.5]# pwd
/usr/local/src/redis-5.0.5
[root@localhost src]# cd $(dirname "`tar -zxvf nginx-1.17.3.tar.gz`")
[root@localhost nginx-1.17.3]# pwd
/usr/local/src/nginx-1.17.3
[root@localhost src]# cd $(dirname "`tar -zxvf libzip-1.5.2.tar.gz`")
[root@localhost libzip-1.5.2]# pwd
/usr/local/src/libzip-1.5.2
[root@localhost src]# tar -zxvf nginx-1.17.3.tar.gz ;cd `basename -s .tar.gz nginx-1.17.3.tar.gz`
[root@localhost nginx-1.17.3]# pwd
/usr/local/src/nginx-1.17.3
[root@localhost src]# cd $(dirname "$(tar -zxvf apache-tomcat-8.5.46.tar.gz)")
[root@localhost conf]# pwd
/usr/local/src/apache-tomcat-8.5.46/conf
[root@localhost src]# cd $(dirname "$(tar -zxvf redis-5.0.5.tar.gz)")
[root@localhost redis-5.0.5]# pwd
/usr/local/src/redis-5.0.5

[root@localhost src]# cd $(dirname $(tar -zxvf apache-tomcat-8.5.46.tar.gz))
[root@localhost apache-tomcat-8.5.46]# pwd
/usr/local/src/apache-tomcat-8.5.46

 

排除Download.sh和Download_LNMP.sh文件进行统计当前目录文件数:ls -lh;find ./*|grep -v .'file1\|file2\|file3\|...\|...\|'|wc -l
[root@localhost src]# ls -lh;find ./*|grep -v 'Down*'|wc -l 
total 120M
-rw-r--r-- 1 root root  7.5M Oct  8 04:14 boost_1_71_0.tar.gz
-rw-r--r-- 1 root root  8.9M Oct  2 10:45 cmake-3.15.4.tar.gz
-rw-r--r-- 1 root root  1.1K Oct  8 03:57 Download_LNMP.txt
-rw-r--r-- 1 root root  1.2K Oct  8 03:56 Download.sh
-rw-r--r-- 1 root root  3.3M Mar 15  2019 freetype-2.10.0.tar.gz
-rw-r--r-- 1 root root 1005K Mar 27  2018 jpegsrc.v9c.tar.gz
-rw-r--r-- 1 root root  3.2M Aug 30  2017 libgd-2.2.5.tar.gz
-rw-r--r-- 1 root root  1.3M Feb 19  2007 libmcrypt-2.5.8.tar.gz
-rw-r--r-- 1 root root  1.5M Oct  8 03:58 libpng-1.6.37.tar.gz
-rw-r--r-- 1 root root   47M Oct  8 04:37 mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
-rw-r--r-- 1 root root 1009K Aug 13 13:01 nginx-1.16.1.tar.gz
-rw-r--r-- 1 root root  7.0M Oct  8 04:25 openssl-1.1.1d.tar.gz
-rw-r--r-- 1 root root  2.0M Oct  8 03:57 pcre-8.43.tar.gz
-rw-r--r-- 1 root root   11M Oct  8 04:04 php-7.3.10.tar.gz
-rw-r--r-- 1 root root  1.8M Oct  8 03:58 t1lib-5.1.2.tar.gz
-rw-r--r-- 1 root root  2.3M Nov 10  2018 tiff-4.0.10.tar.gz
-rw-r--r-- 1 root root  2.8M Oct  8 03:59 v1.8.1
-rw-r--r-- 1 root root  1.5M Aug 11  2014 yasm-1.3.0.tar.gz
-rw-r--r-- 1 root root  594K Jan 15  2017 zlib-1.2.11.tar.gz
17
[root@localhost src]# ls -lh;find ./*|grep -v 'D*.sh\|D*.txt'|wc -l
total 120M
-rw-r--r-- 1 root root  7.5M Oct  8 04:14 boost_1_71_0.tar.gz
-rw-r--r-- 1 root root  8.9M Oct  2 10:45 cmake-3.15.4.tar.gz
-rw-r--r-- 1 root root  1.1K Oct  8 03:57 Download_LNMP.txt
-rw-r--r-- 1 root root  1.2K Oct  8 03:56 Download.sh
-rw-r--r-- 1 root root  3.3M Mar 15  2019 freetype-2.10.0.tar.gz
-rw-r--r-- 1 root root 1005K Mar 27  2018 jpegsrc.v9c.tar.gz
-rw-r--r-- 1 root root  3.2M Aug 30  2017 libgd-2.2.5.tar.gz
-rw-r--r-- 1 root root  1.3M Feb 19  2007 libmcrypt-2.5.8.tar.gz
-rw-r--r-- 1 root root  1.5M Oct  8 03:58 libpng-1.6.37.tar.gz
-rw-r--r-- 1 root root   47M Oct  8 04:37 mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz
-rw-r--r-- 1 root root 1009K Aug 13 13:01 nginx-1.16.1.tar.gz
-rw-r--r-- 1 root root  7.0M Oct  8 04:25 openssl-1.1.1d.tar.gz
-rw-r--r-- 1 root root  2.0M Oct  8 03:57 pcre-8.43.tar.gz
-rw-r--r-- 1 root root   11M Oct  8 04:04 php-7.3.10.tar.gz
-rw-r--r-- 1 root root  1.8M Oct  8 03:58 t1lib-5.1.2.tar.gz
-rw-r--r-- 1 root root  2.3M Nov 10  2018 tiff-4.0.10.tar.gz
-rw-r--r-- 1 root root  2.8M Oct  8 03:59 v1.8.1
-rw-r--r-- 1 root root  1.5M Aug 11  2014 yasm-1.3.0.tar.gz
-rw-r--r-- 1 root root  594K Jan 15  2017 zlib-1.2.11.tar.gz
17

  

 

-exec CMD:正在搜索的文件符合以上条件,并且返回0作为成功执行命令的退出状态。
-ok CMD:它与-exec相同,除了首先提示用户。
-inum N:搜索索引号为“ N”的文件。
-links N:搜索带有“ N”个链接的文件。
-name demo:搜索“ demo”指定的文件。
-newer file:搜索在“文件”之后修改/创建的文件。
-perm octal:如果权限为“八进制”,则搜索文件。
-print:显示使用其余条件找到的文件的路径名。
-empty:搜索空文件和目录。
-size + N / -N:搜索“ N”个块的文件;“ N”后跟“ c”可用于测量字符大小;'+ N'表示大小>'N'个块,'-N'表示大小<'N'个块。
-用户名:搜索由用户名或ID“名称”拥有的文件。
\(expr \):如果'expr'为true,则为true; 用于与OR或AND组合的分组条件。
!expr:如果'expr'为假,则为true。

Find是Unix(或Linux)的功能强大的实用程序之一,用于在目录层次结构中搜索文件。find命令的语法是

查找 [路径名] [条件]

1.如何运行最后执行的find命令?

!find

这将执行最后一个find命令。它还在终端上显示最后执行的find命令以及结果。

2.如何使用名称查找文件?

find -name "sum.java"
./bkp/sum.java
./sum.java

这将在当前目录和子目录中找到所有名称为“ sum.java”的文件。

3.如何使用名称和忽略大小写查找文件?

find -iname "sum.java"
./SUM.java
./bkp/sum.java
./sum.java

这将查找名称为“ sum.java”的所有文件,而忽略当前目录和子目录中的大小写。

4.如何仅在当前目录中查找文件?

find -maxdepth 1 -name "sum.java"
./sum.java

这将仅在当前目录中找到文件“ sum.java” 

5.如何查找名称中包含特定单词的文件?

find -name "*java*"
./SUM.java
./bkp/sum.java
./sum.java
./multiply.java

它显示了文件名

6.中所有带有单词“ java”的文件。如何在特定目录中查找文件?

find /etc -name "*java*"

这将在/ etc目录中的文件名中查找带有“ java”的文件。

7.如何查找名称不是“ sum.java”的文件?

find -not -name "sum.java"
.
./SUM.java
./bkp
./multiply.java

这就像反转比赛一样。它将打印除给定文件“ sum.java”以外的所有文件。

8.如何将文件搜索限制为特定目录?

find -name "sum.java"
./tmp/sum.java
./bkp/var/tmp/files/sum.java
./bkp/var/tmp/sum.java
./bkp/var/sum.java
./bkp/sum.java
./sum.java

您可以在这里看到find命令在当前目录和子目录中显示了所有名称为“ sum.java”的文件。

a.如何打印当前目录中的文件并向下一级打印到当前目录?

find -maxdepth 2 -name "sum.java"
./tmp/sum.java
./bkp/sum.java
./sum.java

b.如何打印当前目录中的文件以及向下两级打印到当前目录?

find -maxdepth 3 -name "sum.java"
./tmp/sum.java
./bkp/var/sum.java
./bkp/sum.java
./sum.java

c.如何在1级和4级之间的子目录中打印文件?

find -mindepth 2 -maxdepth 5 -name "sum.java"
./tmp/sum.java
./bkp/var/tmp/files/sum.java
./bkp/var/tmp/sum.java
./bkp/var/sum.java
./bkp/sum.java

9.如何在目录中查找空文件?

find . -maxdepth 1 -empty
./empty_file

10.如何在当前目录和子目录中查找最大的文件

find . -type f -exec ls -s {} \; | sort -n -r | head -1

查找命令“查找。-type f -exec ls -s {} \;” 将列出所有文件以及文件的大小。然后,sort命令将根据大小对文件进行排序。head命令将仅从sort输出中选择第一行。

11.如何在当前目录和子目录中查找最小的文件

find . -type f -exec ls -s {} \; | sort -n -r | tail -1

使用find的另一种方法是

find . -type f -exec ls -s {} \; | sort -n  | head -1

12.如何根据文件类型查找文件?

a.查找套接字文件

find . -type s

b.查找目录

find . -type d

C.查找隐藏目录

find -type d -name ".*"

d.查找常规文件

find . -type f

e.查找隐藏文件

find . -type f -name ".*"

13.如何根据大小查找文件?

a.查找大小恰好为10M的文件

find . -size 10M

B.查找大于10M的文件

find . -size +10M

C.查找小于10M的文件

find . -size -10M

14.如何查找在给定文件修改后被修改的文件。

find -newer "sum.java"

15.这将显示在文件“ sum.java”之后修改的所有文件。15 

find -anewer "sum.java"

16.显示修改给定文件后更改的文件。

find -cnewer "sum.java"

17.如何根据文件权限查找文件?

find . -perm 777

这将显示具有读取,写入和执行权限的文件。要了解文件和目录的权限,请使用命令“ ls -l”。

18.查找在30分钟内修改的文件。

find . -mmin -30

19.查找在1天内修改的文件。

find . -mtime -1

20. 30分钟后如何找到被修改的文件

find . -not -mmin -30

21.如何找到1天后修改的文件。

find . -not -mtime -1

22.打印在1小时内访问的文件。

find . -amin -60

23.打印在1天内访问的文件。

find . -atime -1

24.显示在2小时内更改的文件。

find . -cmin -120

25.显示2天内更改的文件。

find . -ctime -2

26.如何查找在两个文件之间创建的文件。

find . -cnewer f1 -and ! -cnewer f2

到目前为止,我们仅找到文件并显示在终端上。现在,我们将看到如何对文件执行一些操作。

1.如何查找包含名称“ java”的文件的权限?

find -name "*java*"|xargs ls -l

替代方法是

find -name "*java*" -exec ls -l {} \;

2.查找其中名称为“ java”的文件,然后仅显示其中包含“类”字的文件?

find -name "*java*" -exec grep -H class {} \;

3.如何删除包含名称“ java”的文件。

find -name "*java*" -exec rm -r {} \;

参考连接:
https://www.folkstalk.com/2011/12/101-examples-of-using-find-command-in.html
posted @ 2019-09-27 15:07  wwweee000  阅读(3540)  评论(0编辑  收藏  举报