Linux基础教程:关于Linux find 命令

基本用法

   
read命令主要用于从标准输入读取内容或从文件中读取内容,并把信息保存到变量中。其常用用法如下所示:

read [选项] [文件]
选项 解释
-a array 将内容读取到数值中,变量默认为数组且以空格做为分割符
-d delimiter 遇到指定的字符即停止读取
-n nchars 指定最多可以读入的字符数,即定义输入文本的长度
-r 屏蔽转义符
-p prompt 显示提示信息
-s 静默模式,在输入字符时不在终端中显示,常用于密码输入等
-t timeout 指定超时时间
-u FD 从文件描述符中读入,该FD可以由exec开启

exit   退出

  1. 无错误查找技巧:

stat查看文件状态

给公司做了一个Linux基础培训,整理命令的时候发现,尽管Linux的bash+utils大概有1000个命令,但其实最常用的只有33个。掌握了这33个基本命令/工具/参数,完全可以应付一般的操作使用了。如下图:

用法示例

1、从标准输入读入

[root@localhost test]# cat read.sh
#!/bin/bash
echo -n "Please input your name:"
read name
echo "Hello $name"
[root@localhost test]# bash read.sh
Please input your name:Jack
Hello Jack

2、指定显示信息从标准输入读入

[root@localhost test]# cat read.sh
#!/bin/bash
# echo -n "Please input your name:"
read -p "Please input your name:" name
# read name
echo "Hello $name"
[root@localhost test]# bash read.sh
Please input your name:Jack
Hello Jack

在以上示例中,read是一次可以接受多个参数的,如下所示:

read -p "Please input your name:" firstName secondName lastName

但需要注意的事项如下:

  • 如果输入的数据少于变量个数,则多余的变量不会获取到数据,即变量值为空
  • 如果输入的数据多于变量个数,则超出的数据将全部赋给最后一个变量
  • 如果在read命令后面没有定义任何变量,脚本在执行时,如果用户输入数据,此时数据则保存到环境变量$REPLY

威尼斯网址开户网站,3、指定超时时间

[root@localhost test]# cat read.sh
#!/bin/bash
if read -t 3 -p "Please input your name:" firstName secondName lastName
then
  echo "variable is $firstName - $secondName - $lastName"
else
   echo -e  "\ntimeout\n"
fi
[root@localhost test]# bash read.sh
Please input your name:
timeout

4、从指定文件中读取内容

[root@localhost test]# cat -n test.txt
     1  this is test text.
     2  this is second line.
     3  Hello world
     4  C# Main
     5  Python
# 使用-u选项
[root@localhost test]# cat readtest.sh
#!/bin/bash
exec 5< ~/test/test.txt
count=0
while read -u 5 var
do
 let count=$count+1
 echo "Line $count is $var"
done
echo "Total line count is $count"
exec 5<&-
[root@localhost test]# bash readtest.sh
Line 1 is this is test text.
Line 2 is this is second line.
Line 3 is Hello world
Line 4 is C# Main
Line 5 is Python
Total line count is 5
# 使用管道
[root@localhost test]# cat readtest.sh
#!/bin/bash
count=1
cat ~/test/test.txt |  while read line
do
 echo "Current line $count - $line "
 let count=$count+1
done
echo "Total line count is $count"
[root@localhost test]# bash readtest.sh
Current line 1 - this is test text.
Current line 2 - this is second line.
Current line 3 - Hello world
Current line 4 - C# Main
Current line 5 - Python
Total line count is 1
# 使用重定向
[root@localhost test]# cat readtest.sh
#!/bin/bash
count=0
while read line
do
 let count=$count+1
 echo "Current line $count - $line "
done < ~/test/test.txt
echo "Total line count is $count"
[root@localhost test]# bash readtest.sh
Current line 1 - this is test text.
Current line 2 - this is second line.
Current line 3 - Hello world
Current line 4 - C# Main
Current line 5 - Python
Total line count is 5

本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:
威尼斯网址开户网站 1

cd
//.表示当前目录,..表示上一目录
cd linhai 进入linhai子目录
cd ..返回上一层目录
cd /切换到跟目录
cd ~切换到用户目录

  在Linux系统中“find”命令是大多数系统用户都可以使用的命令,并不是ROOT系统管理员的专利。但是普通用户使用“find”命令时也有可能遇到这样的问题,那就是Linux系统中系统管理员ROOT可以把某些文件目录设置成禁止访问模式。这样普通用户就没有权限用“find”命令来查询这些目录或者文件。当普通用户使用“find”命令来查询这些文件目录是,往往会出现”Permissiondenied.”(禁止访问)字样。系统将无法查询到你想要的文件。为了避免这样的错误,我们可是使用转移错误提示的方法尝试着查找文件,

[Oracle@RHEL5-4-11G
dbs]$ stat initrhel54.ora

威尼斯网址开户网站 2

ls
显示目录
ls 显示当前目录下的所有文件
ls -l 显示当前目录下的所有文件的详细信息
ls -a 显示所有文件和目录,只要区别就是.和..目录
ls -A 显示所有文件和目录

输入
find / -name access_log 2>/dev/null

File: `initrhel54.ora’

威尼斯网址开户网站 3

mkdir
建立子目录//不能在不存在的目录下创建子目录
mkdir test 在当前目录下建立一个test子目录
mkdir /test 在跟目录下建立一个test子目录

  这个方法是把查找错误提示转移到特定的目录中去。系统执行这个命令后,遇到错误的信息就直接输送到stderrstream
2 中,access_log 2就是表明系统将把错误信息输送到stderrstream
2中,/dev/null是一个特殊的文件,表明空的或者错误的信息,这样查询到的错误信息将被转移了,不会再显示了。

Size: 150            Blocks: 8          IO Block: 4096  regular file

rmdir 删除目录//只能删除空的子目录 rmdir tmp 删除当前目录下的tmp子目录
rmdir /tmp 删除跟目录下的tmp子目录

  1. 根据部分文件名查找方法:

Device: 810h/2064d      Inode: 4540573    Links: 1

cp
拷贝命令
cp 1.txt 2.txt
把当前目录下的1.txt文件复制成2.txt(2.txt是通过cp命令创建的,内容与1.txt相同)
cp 1.txt test 把1.txt拷贝到test子目录下
cp -i 1.txt test 目标目录下如果有该文件,则提示是否覆盖
cp -v 1.txt test 显示拷贝命令执行过程
cp -R * test 把当前目录下的所有东西复制到test目录下

  这个方法和在WINDOWS中查找已知的文件名方法是一样的。不过在Linux中根据部分文件名查找文件的方法要比在WINDOWS中的同类查找方法要强大得多。例如我们知道某个文件包含有srm这3个字母,那么要找到系统中所有包含有这3个字母的文件是可以实现的,输入:

Access: (0644/-rw-r–r–)  Uid: (  500/  oracle)  Gid: (  500/    dba)

rm
删除命令
rm 1.txt 删除当前目录下的1.txt文件
rm * 删除当前目录下的一切
rm -f *.txt 强制删除当前目录下的一类文件,无提示
rm -i *.txt 删除时会按照文件个数逐一提示 遇见目录则跳过
rm -r test 删除test目录及其目录内的所有内容

  find /etc -name ‘*srm*’

Access: 2011-07-14 11:53:47.000000000 +0800

more
让画面暂停
ls -l|more(more 1.txt)
当内容超过时用more表示,按任意键下一页

  1.  根据文件的特征查询方法:

Modify: 2011-07-13 13:25:01.000000000 +0800

cat 查看文件 1.txt 查看1.txt文件内容 //只能打开下一级目录
-b     不显示文件中的空行。
-A    相当于 -v -E -T (-vET)。
-E     在文件的每一行行尾加上“$”字符。
-T     将文件中的Tab键用字符“^I”来显示。
-n    在文件的每行前面显示行号。
-s     将连续的多个空行用一个空行来显示。
-v    显示除Tab和Enter之外的所有字符。

如果只知道某个文件的大小,修改日期等特征也可以使用“find”命令查找出来,这和WINDOWS系统中的”搜索”功能是基本相同的。

Change: 2011-07-13 13:25:01.000000000 +0800

mv
移动或更改文件名
mv 1.txt test 把1.txt移动到test文件夹中
mv 1.txt 2.cpp 把1.txt重命名为2.cpp

  例如我们知道一个Linux文件大小为1,500
bytes,那么我们可是使用如下命令来查询find / -size 1500c,字符 c
表明这个要查找的文件的大小是以bytes为单位。如果我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查找方式来解决。例如我们输入find/
-size +10000000c
这个命令,则标明我们指定系统在根目录中查找出大于10000000字节的文件并显示出来。命令中的“+”是表示要求系统只列出大于指定大小的文件,而使用“-”则表示要求系统列出小于指定大小的文件。下面的列表就是在Linux使用不同“
find”命令后系统所要作出的查找动作,从中我们很容易看出在Linux中使用“find”命令的方式是很多的,“
find”命令查找文件只要灵活应用,丝毫不必在WINDOWS中查找能力差。

[oracle@RHEL5-4-11G dbs]$

pwd
显示当前所在目录命令
pwd 显示当前所在目录(显示为一个目录的绝对地址)

  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这个用户的文件

FILE:文件名

find
查找文件命令
find / -name 1.txt -print
从跟目录下查询名字为1.txt的文件,并显示出来

  下面的列表就是对find命令所可以指定文件的特征进行查找的部分条件。在这里并没有列举所有的查找条件,参考有关Linux有关书籍可以知道所有find命令的查找函数。
  -amin n
  查找系统中最后N分钟访问的文件
  -atime n
  查找系统中最后n*24小时访问的文件
  -cmin n
  查找系统中最后N分钟被改变状态的文件
  -ctime n
  查找系统中最后n*24小时被改变状态的文件
  -empty
  查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹
  -false
  查找系统中总是错误的文件
  -fstype type
  查找系统中存在于指定文件系统的文件,例如:ext2 .
  -gid n
  查找系统中文件数字组 ID 为 n的文件
  -group gname
  查找系统中文件属于gnam文件组,并且指定组和ID的文件

SIZE:stat命令把文件的长度叫做大小

locate 查找命令//比find速度快 locate 2.cpp
查找含有2.cpp的所有文件,显示其绝对路径

威尼斯网址开户网站 4

BLOCKS:该文件占用的文件系统空间块数

file
显示文件类型
file 2.cpp 显示2.cpp的文件格式

LINKS:链接数

威尼斯网址开户网站 5

ACCESS: atime

MODIFY: mtime

CHANGE: ctime

THE END

威尼斯网址开户网站 6

相关文章