0%

Linux的 ls 命令

如果linux命令来个排名,ls命令应该是最常用的命令,除非你像黄蓉的母亲,有过目不忘的本领,惹得黄药师抱憾终身。

ls命令是list的缩写,通过ls命令,我们可以查看目录的内容,确定各种重要文件和目录的属性。

命令格式

1
ls [参数] [路径]

不加任何参数

如果不加任何参数,默认列出当前目录的内容。

1
2
3
4
5
6
➜  ~ ls /etc/sysconfig/network-scripts
ifcfg-em1
ifcfg-em2
ifcfg-em3
ifcfg-em4
....

使用-l显示更多细节

-l 就是使用long listing format长格式,来显示更多的内容信息。

1
2
3
4
5
6
7
➜  ~ ls -l /etc/sysconfig/network-scripts
total 264
-rw-r--r--. 1 root root 341 Nov 30 10:56 ifcfg-em1
-rw-r--r--. 1 root root 294 May 13 2016 ifcfg-em2
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em3
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em4
......

使用-t按照时间排序

如果希望看到最近创建的文件,就需要用到-t参数了。

1
2
3
4
5
6
7
➜  ~ ls -lt /etc/sysconfig/network-scripts/
total 264
-rw-r--r--. 1 root root 341 Nov 30 10:56 ifcfg-em1
-rw-r--r--. 1 root root 294 May 13 2016 ifcfg-em2
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em4
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em3
...

使用-r按照时间逆序

如果希望删除很早以前的文件,看到最早创建的文件,就需要用到-r参数了。

1
2
3
4
5
6
7
➜  ~ ls -ltr /etc/sysconfig/network-scripts/
total 264
...
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em3
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em4
-rw-r--r--. 1 root root 294 May 13 2016 ifcfg-em2
-rw-r--r--. 1 root root 341 Nov 30 10:56 ifcfg-em1

使用-S根据文件大小排序

1
2
3
4
5
6
7
➜  ~ ls -lS /etc/sysconfig/network-scripts/
total 264
...
-rw-r--r--. 1 root root 341 Nov 30 10:56 ifcfg-em1
-rw-r--r--. 1 root root 294 May 13 2016 ifcfg-em2
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em3
-rw-r--r--. 1 root root 272 May 10 2016 ifcfg-em4

ncurses是字符终端下屏幕控制的基本库,在编译grub时出现如下错误:

1
2
3
/usr/bin/ld:can not find -lncurses

collect2: ld returned 1 exit status

首先安装ncurses。

Fedora/CentOS/RedHat

1
$ yum install ncurses-devel ncurses-static

Ubuntu:

1
$ apt-get install libncurses5-dev

Linux学习之道
http://www.linuxdiyf.com 看的。

做为中国人的特殊情况,学习linux对中国人来说要做的事情相对多了一些:

  1. 以linux为荣耀,以帮助他人了解和学习linux为己任。
  2. 坚持访问英文网站,尤其是一些大师的个人主页。坚持阅读英文文档,并尽量翻译你读过的文档发表到国内的社区上供他人阅读和整理
  3. 了解unix的历史,linux的历史和hacker的历史及文化
  4. 尽可能联系所以可以联系到Linux的爱好者,尽可能多的了解你能接触到的最了解linux的人对linux的看法。并于自己的观点相比较。
  5. 空闲时思索为什么自己喜欢linux,别人为什么喜欢linux。为什么你们喜欢的理由不同?
  6. 阅读各类的开源许可协议和商业的用户许可协议。对比他们各有哪些问题和优势。

以上使你了解开源文化,是作为一个合格的linux社区成员的前提。

  1. 安装一个linux的发行版本。
  2. 尽你最大的能力把你的学习、娱乐或者工作的环境转移到linux上来。尽量避免寻找linux功能类似的软件,而是寻找linux下解决同样问题的通用的方法。并且对比同windows下的解决方法哪种更加优越。
  3. 学会SHELL编程。SHELL几乎可以作为一个入门语言来学习。最低的要求是能够看懂你自己的版本的linux的配置脚本。理解为什么一些帖子中里提到的配置方法回起作用,并了解你的发行版本怎样从每个配置文件中把设置用环境变量的形式读取并让他生效的。
  4. 学会安装以各种方式发行的程序,并且让他们的安装同你系统的惯例一致。熟悉X windows的运作方式。熟悉你的发行版本的安全机制,并且学会定制他们按你的需求工作。

如果仅仅是作为用户并且部分体会unix的哲学,上面的几点就足够了。个人认为这几点足够成长为一个合格的Linux用户了。甚至只要再稍稍的扩充就可以制作自己的发行版本了!而对于不同的用户群体,比如办公用户或者科研人员等。第8条意味着不同的标准。

  1. 选择一门或几门语言社区常用的编程语言
  2. 搜集社区或者hackers推荐的图书或资料、网站、新闻组等。
  3. 选择一个较小的用你当前学习的语言开发的开源项目。阅读他的代码,并且对比他的代码和你形象的编写方式是否相同?哪种更加优越?
  4. 尝试按照TODO中的要求为这个软件编写代码,并且同他的作者联系。学习autoconf和automake等工具的用法。
  5. 你也可以不参与项目的开发,但仍然能从代码阅读中获益。如果项目是一种你没有接触到的技术或者标准的实现,那么搜集资料读懂它!
  6. 学会使用linux下的调试工具,如果软件还不太稳定,可以帮助找出BUG并且改正。并且学会制作patch发给作者。
  7. 如果曾是windows的程序员,尝试把开发环境转移到linux上来。或者开始在windows的开发工作中使用开源的开发工具和SDK。
  8. 如果是系统管理员,还要学会在linux部署更强的各类的安全方案。但这已经不属于学习linux的范畴了。

上面介绍了几条学习的要求,主要强调的是学习的态度。至于具体什么样的技术和自己应该在技术层次上的要求,按照上面介绍的方法应该会慢慢的体会到。

关于开发/编程工具

Refer from : http://www.zhihu.com/question/20302904

我认为开发编程工具分三类,需区别对待:

  1. 可以使用一辈子的工具,学习路径几乎没有尽头,值得在职业初期就好好考虑,仔细斟酌进行选择,并在整个生涯中不断努力力求学到更多,你的工作效率会因为这种努力不断提高。如:
  • 编辑器: vim / emacs
  • 基本操作系统环境:如shell
  • 基本编程语言: c / lisp
  1. 任何时候都需要掌握的工具,这类工具总是每隔一个周期就有新的产品出现,取代掉旧有的产品,但相对来说是值得学习的,能保持一个较长的时代的有效期,如:
  • 版本控制系统:git
  • 社交网络: stack overflow/github
  • 写作工具: markdown / latex / html
  • 通用编程语言: python / ruby / javascript
  1. 特定领域需要的工具,此类工具往往时效性较短,不断被新产品取代,一旦掌握,能在特定领域获得非常高的效率,但缺点是很快会过期,通常是几年之内
  • 各类编程框架: xcode / rails / backbone
  • 各类测试框架:xunit / rspec
  • 用户行为分析工具: ga
  • 各类设计工具: balsamiq
  • 各类项目管理,代码集成工具: github / trac / basecamp

Fedora17初始配置

系统基本配置

刚刚安装完毕的系统无法在命令直接添加 sudo 执行。可以使用 su 或 su –c ‘cmd’ 来执行需要管理员权限的命令。

启用 sudo

在终端下输入vi /etc/sudoers 或visudo命令:
搜索文件,找到下面而2行内容:

1
2
## Allow root to run any commands anywhere
root ALL=(ALL) ALL

然后,在第二行下面添加如下内容

‘username’ ALL=(ALL) ALL

提示:将换成你的用户名即可。

检查、安装系统更新

检查系统更新:

1
$ sudo yum check-update

安装系统更新:

1
$ sudo yum update

安装快速打开终端

1
$ sudo yum nautilus-open-terminal

设置中文输入法

安装Fcitx 小企鹅输入法

1
$ sudo yum install fcitx ibus-sunpinyin

在应用里面查找“Input Method selector”(输入法切换器),打开后选择“Show
all”(显示所有输入法),选择“Chinese”,添加“Pinyin输入法”即可。

GNOME 3.2 配置

安装Gnome-tweak-tool

1
$ sudo yum install gnome-tweak-tool    —对于不是很习惯Gnome3的可以事先缓解一下

GNOME Shell Extension

扩展列表:

1
$ sudo yum install gnome-shell-extension-alternate-tab.noarch gnome-shell-extension-apps-menu.noarch gnome-shell-extension-auto-move-windows.noarch gnome-shell-extension-common.noarch gnome-shell-extension-cpu-temperature.noarch gnome-shell-extension-dock.noarch gnome-shell-extension-drive-menu.noarch gnome-shell-extension-gpaste.noarch gnome-shell-extension-icon-manager.noarch gnome-shell-extension-mediaplayers.noarch gnome-shell-extension-noim.noarch gnome-shell-extension-noripple.noarch gnome-shell-extension-pidgin.i686 gnome-shell-extension-places-menu.noarch gnome-shell-extension-pomodoro.noarch gnome-shell-extension-presentation-mode.noarch gnome-shell-extension-remove-volume-icon.noarch gnome-shell-extension-righthotcorner.noarch gnome-shell-extension-systemMonitor.noarch gnome-shell-extension-theme-selector.noarch gnome-shell-extension-user-theme.noarch gnome-shell-extension-windowsNavigator.noarch gnome-shell-extension-workspace-indicator.noarch gnome-shell-extension-workspacesmenu.noarch gnome-shell-extension-xrandr-indicator.noarch gnome-shell-theme-atolm.noarch gnome-shell-theme-dark-glass.noarch gnome-shell-theme-gaia.noarch gnome-shell-theme-orta.noarch gnome-shell-theme-smooth-inset.noarch

扩展安装完毕后,需重启GNOME Shell(按住Alt+F2,输入 r) 。打开gnome-tweak-tool,激活安装的扩展即可。

安装编译开发环境

1
$ yum install curl-devel gcc glibc-devel gcc-gfortran gcc-c++ python perl erlang vim gedit tcl tk

安装X11图形库

1
$ sudo yum install libX11-devel

安装auto libtools

autoconf automake libtool flex pkgconfig

安装分布式文件管理工具git

1
$ yum install git-core

集成工具与常用软件

优秀集成工具推荐:

Ailurus小熊猫

1
yum install ailurus:著名的系统设置、软件工具

Autoplus

简介:可用Autoplus进行安装/卸载 Adobe Flash, codecs, Google Earth,Skype, Sun Java, VirtualBox, WinFF, Imagination, Cinelerra, Hugin Panorama Creator, Lightscribe, Dropbox等操作。

1
su -c ‘yum -y -–nogpgcheck install http://dnmouse.org/autoplus-1.4-5.noarch.rpm’

如果有必要,可导入签名(可选项):

1
2
3
4
5
6
su -c ‘rpm –import http://dnmouse.org/RPM-GPG-KEY-dnmouse’
Fedora Utils

应用安装与系统设置脚本,可安装Adobe Flash, codecs, Sun Java, Adobe Air,Wine, Google Earth, GTalk plugin, MS Truetype Fonts 等其他常用应用。
```bash
su -c “curl http://master.dl.sourceforge.net/project/fedorautils/fedorautils.repo -o /etc/yum.repos.d/fedorautils.repo && yum install fedorautils”

常用应用

邮件

1
$ sudo yum install thunderbird

文件分享

Transmission(BT客户端)

1
$ sudo yum install transmission

Filezilla(FTP客户端):

1
$ sudo yum install filezilla

即时通讯IM

Pidgin(同Empathy):

1
$ sudo yum install pidgin

Emesene(MSN客户端):

1
$ sudo yum install emesene

Gwibber(微博客户端):

1
$ sudo yum install gwibber

Pino(Twitter 客户端):
$ sudo yum install pino

1
2
3
Hotot(傲兔,Twitter客户端)
```bash
yum install hotot

图形图像

shutter(截图、截屏):

1
$ sudo yum install shutter

Gimp:

1
$ sudo yum install gimp

Dia(流程图):

1
$ sudo yum install dia

Inkscape(矢量做图):

1
$ sudo yum install inkscape

Gthumb(图像浏览器):

1
$ sudo yum install gthumb

Pinta(小Gimp):

1
$ sudo yum install pinta

播放器

vlc:

1
$ sudo yum install vlc

Banshee(音乐播放器):

1
$ sudo yum install banshee

音视频编辑

Pitivi(视频编辑):

1
$ sudo yum install pitivi

Audacity(音频编辑):

1
$ sudo yum install audacity

系统类工具

Gnome Do(快速文件搜索):

1
$ sudo yum install gnome-do

p7zip (解压缩工具):

1
$ sudo yum install p7zip

Terminator(优秀命令终端):

1
$ sudo yum install terminator

办公

Stardict(星际词典):

1
$ sudo yum install stardict

Chmsee(CHM文件阅读器):
$ sudo yum install chmsee

1
2
3
LibreOffice(Office套件):
```bash
$ sudo yum install libreoffice

IDE

Anjuta:

1
$ sudo yum install anjuta

Code::Blocks:

1
$ sudo yum install codeblocks

Eclipse:

1
$ sudo yum install eclipse-platform

版本控制

1
$ sudo yum install svn git bzr cvs

yum

查看更新的软件

1
$ yum list upgrades

详细情况:

开机后画面停留在白色MI,然后就是死等也等不开机。如此这般,设置无法关机,只能拔掉电板。

解决方法:

  1. 按住开机键 和 音量+ ;
  2. 选择(按电源键选择)简体中文,选择重启手机;
  3. 这时候提示两个系统 选择后缀没有注释最近的选项,然后OK。

PS.有注释的也就是无法启动的OS,我的问题应该是在MIUI上安装busybox导致的。

本来打算重新刷机的,看来不用了。

嘻嘻。

高兴

一切皆可查的 find

find命令用来在指定目录下查找文件,功能相当之强大。

官方定义为:

find - search for files in a directory hierarchy

Linux的哲学是一切皆文件,那么find的使命就是一切皆可查

语法

使用语法为:

1
$ find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

比较常用的几个参数为:

  • -exec <执行指令>:假设find指令的回传值为True,就执行该指令;
  • -size <文件大小>:查找符合指定的文件大小的文件;
  • -mtime <24小时>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
    -name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
  • -type <文件类型>:只寻找符合指定的文件类型的文件;

无参数

如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ ls -l
total 310M
-rw-rw-r-- 1 user user 10M Mar 21 20:01 a
drwxrwxr-x 2 user user 22 Mar 21 20:01 aa
-rw-rw-r-- 1 user user 100M Mar 21 20:01 b
-rw-rw-r-- 1 user user 200M Mar 21 20:01 c


$ find
.
./a
./b
./c
./test

查找小于,等于和大于100MB的文件

通过-size大小来查找文件

1
2
3
4
5
6
7
8
9
10
$ find . -size -100M
.
./a
./aa
$ find . -size 100M
./b
$ find . -size +100M
./c
./aa/d

查找多长时间修改过

可以通过参数-mtime来查找文件的修改时间,比如如下可以查找当前目录下最近60天没有被修改的文件。

1
2
3
4
$ find . -mtime +60

# 最近2天以内未修改
$ find . –mtime -2

如何删除扩展名为.tar.gz并且大于100M的压缩文件?

当你不想意外删除文件时,那么当执行下列命令要小心点。最好的方法是利用ls -l去执行下列相同命令以确保当执行rm命令时,你知道什么文件会被删除。

1
2
3
$ find / -type f -name *.tar.gz -size +100M -exec ls -l {} \; 

$ find / -type f -name *.tar.gz -size +100M -exec rm -f {} \;

稍微复杂但是很有用的命令

我经常把 find 命令和他的选项 exec一起使用,比如我想查找一个目录中的所有文件并将其更改其权限。可以通过以下简单命令完成:

$ find /path/ -type f -exec chmod 644 {} \;

这个命令会递归搜索指定目录内/path/下的所有文件,并对找到的文件执行 chmod 命令。

Linux 之 find 命令

find命令用来在指定目录下查找文件,功能相当之强大。

官方定义为:

find - search for files in a directory hierarchy

Linux的哲学是一切皆文件,那么find的使命就是一切皆可查

语法

使用语法为:

1
$ find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

比较常用的几个参数为:

  • -exec <执行指令>:假设find指令的回传值为True,就执行该指令;
  • -size <文件大小>:查找符合指定的文件大小的文件;
  • -mtime <24小时>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
    -name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
  • -type <文件类型>:只寻找符合指定的文件类型的文件;

1⃣ 无参数

如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ ls -l
total 310M
-rw-rw-r-- 1 user user 10M Mar 21 20:01 a
drwxrwxr-x 2 user user 22 Mar 21 20:01 aa
-rw-rw-r-- 1 user user 100M Mar 21 20:01 b
-rw-rw-r-- 1 user user 200M Mar 21 20:01 c


$ find
.
./a
./b
./c
./test

2⃣ 查找小于,等于和大于100MB的文件

通过-size大小来查找文件

1
2
3
4
5
6
7
8
9
10
$ find . -size -100M
.
./a
./aa
$ find . -size 100M
./b
$ find . -size +100M
./c
./aa/d

3⃣ 查找多长时间修改过

可以通过参数-mtime来查找文件的修改时间,比如如下可以查找当前目录下最近60天没有被修改的文件。

1
2
3
4
$ find . -mtime +60

# 最近2天以内未修改
$ find . –mtime -2

4⃣ 稍微复杂但是很有用的命令

我经常把 find 命令和他的选项 exec一起使用,比如我想查找一个目录中的所有文件并将其更改其权限。可以通过以下简单命令完成:

1
$ find /path/ -type f -exec chmod 644 {} \;

这个命令会递归搜索指定目录内/path/下的所有文件,并对找到的文件执行 chmod 命令。

Linux 之 find 命令

find命令用来在指定目录下查找文件,功能相当之强大。

官方定义为:

find - search for files in a directory hierarchy

Linux的哲学是一切皆文件,那么find的使命就是一切皆可查

语法

使用语法为:

1
$ find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

比较常用的几个参数为:

  • -exec <执行指令>:假设find指令的回传值为True,就执行该指令;
  • -size <文件大小>:查找符合指定的文件大小的文件;
  • -mtime <24小时>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
    -name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
  • -type <文件类型>:只寻找符合指定的文件类型的文件;

无参数

如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ ls -l
total 310M
-rw-rw-r-- 1 user user 10M Mar 21 20:01 a
drwxrwxr-x 2 user user 22 Mar 21 20:01 aa
-rw-rw-r-- 1 user user 100M Mar 21 20:01 b
-rw-rw-r-- 1 user user 200M Mar 21 20:01 c


$ find
.
./a
./b
./c
./test

查找小于,等于和大于100MB的文件

通过-size大小来查找文件

1
2
3
4
5
6
7
8
9
10
$ find . -size -100M
.
./a
./aa
$ find . -size 100M
./b
$ find . -size +100M
./c
./aa/d

查找多长时间修改过

可以通过参数-mtime来查找文件的修改时间,比如如下可以查找当前目录下最近60天没有被修改的文件。

1
2
3
4
$ find . -mtime +60

# 最近2天以内未修改
$ find . –mtime -2

稍微复杂但是很有用的命令

我经常把 find 命令和他的选项 exec一起使用,比如我想查找一个目录中的所有文件并将其更改其权限。可以通过以下简单命令完成:

1
$ find /path/ -type f -exec chmod 644 {} \;

这个命令会递归搜索指定目录内/path/下的所有文件,并对找到的文件执行 chmod 命令。

一个搜索文件的好例子是:

1
# find /home/user -type f

这个命令会搜索 /home/user 目录下的所有文件。find 命令真的很强大,你可以传递更多选项给它使得你的搜索更加详细。如果你想搜索超过特定大小的文件,可以使用:

1
# find . -type f -size 10M

上面的命令会搜索当前目录中所有大于 10M 的文件。确保不要在你 Linux 系统的根目录运行该命令,因为这可能导致你的机器 I/O 瓶颈。

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart:从本日开始计算时间;
-depth:从指定目录下最深层的子目录开始查找;
-expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;

-false:将find指令的回传值皆设为False;
-fls<列表文件>:此参数的效果和指定ls参数类似,但会把结果保存为指定的列表文件;
-follow:排除符号连接;
-fprint<列表文件>:此参数的效果和指定-print参数类似,但会把结果保存成指定的列表文件;
-fprint0<列表文件>:此参数的效果和指定-print0参数类似,但会把结果保存成指定的列表文件;
-fprintf<列表文件><输出格式>:此参数的效果和指定-printf参数类似,但会把结果保存成指定的列表文件;
-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;
-gid<群组识别码&gt;:查找符合指定之群组识别码的文件或目录;
-group<群组名称>:查找符合指定之群组名称的文件或目录;
-ilname<范本样式>:此参数的效果和指定-lname参数类似,但忽略字符大小写的差别;
-iname<范本样式>:此参数的效果和指定-name参数类似,但忽略字符大小写的差别;
-inum<inode编号>:查找符合指定的inode编号的文件或目录;
-ipath<范本样式>:此参数的效果和指定-path参数类似,但忽略字符大小写的差别;
-iregex<范本样式>:此参数的效果和指定-regexe参数类似,但忽略字符大小写的差别;
-links<连接数目>:查找符合指定的硬连接数目的文件或目录;
-iname<范本样式>:指定字符串作为寻找符号连接的范本样式;
-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
-maxdepth<目录层级>:设置最大目录层级;
-mindepth<目录层级>:设置最小目录层级;
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mount:此参数的效果和指定-xdev相同;

-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-nogroup:找出不属于本地主机群组识别码的文件或目录;
-noleaf:不去考虑目录至少需拥有两个硬连接存在;
-nouser:找出不属于本地主机用户识别码的文件或目录;
-ok<执行指令>:此参数的效果和指定-exec类似,但在执行指令之前会先询问用户,若回答y或Y,则放弃执行命令;
-path<范本样式>:指定字符串作为寻找目录的范本样式;
-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有&ldquo;./&rdquo;字符串;
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
-prune:不寻找字符串作为寻找文件或目录的范本样式;
-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;

-true:将find指令的回传值皆设为True;

-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
-xdev:将范围局限在先行的文件系统中;
-xtype<文件类型>:此参数的效果和指定type参数类似,差别在于它针对符号连接检查。

如何查找在最近几天没有被修改过的文件?

下面这条命令会列出在当前目录下在最近60天没有被修改过文件

# find . -mtime +60

如何查找在最近几天被修改的文件?

下面这条命令会列出在当前目录下在最近2天被修改过文件

# find . –mtime -2

所以+-可以查找未被修改和修改过的文件。

如何删除目录/home/aaa/test中扩展名为.tar.gz并且大于100M的压缩文件?

先来一个例子:

我想查找后缀为tar.gz的,大于100M的文件,并详细查看,可以使用

find /home/aaa/test -type f -name *.tar.gz -size +100M -exec ls -l {} ;

find / home/aaa/test -type f -name *.tar.gz -size +100M -exec rm -f {} ;

find

◦find [搜索范围] [匹配条件]

◦1. find /etc –name passwd

◦2.

◦3. find / -user yourname

◦4. find / -amin/-cmin/-mmin

–amin – access访问时间 –

cmin – change 文件属性

–mmin – modify 文件内容

◦ 5. find / -type f/d/l 文件/目录/软链接

locate

◦locate filename

◦/var/lib/mlocate/mlocate.db && updated

which && whereis 查找命令

在home目录查找以.txt结尾的文件名

1
find /home -name "*.txt"

在home目录查找以.txt结尾的文件名,但是忽略大小写

1
find /home -iname "*.txt"

在home目录查找以.txt和.pdf结尾的文件名,但是忽略大小写

1
find /home -name "*.txt" -o -name ".pdf"

匹配文件路径或者文件

1
find . -path "*path*"

否定参数

找出home目录下不是以.txt结尾的文件

1
find /home ! -name "*.txt"

根据文件类型进行搜索

1
find . -type 类型参数

其中类型参数如下:

  • f 普通文件
  • l 符号链接
  • d 目录
  • c 字符设备
  • b 块设备
  • s 套接字
  • p FIFO

在home目录查找以.txt结尾的文件名,但是忽略大小写

向下最大深度限制为3

1
find . -maxdepth 3 -type f

根据文件时间戳进行搜索

1
find . -type f 时间戳

每个文件都有3个时间戳

  1. 访问时间 -atime 天 -amin 分钟 :用户最后一次访问时间
  2. 修改时间 -mtime 天 -mmin 分钟 :文件最后一次修改时间
  3. 变化时间 -ctime 天 -cmin 分钟 :文件数据元(如权限)最后一次修改时间

搜索最近7天内访问过的文件

1
find . -type f -atime -7

搜索恰好7天访问过的文件

1
find . -type f -atime 7

搜索超过7天内访问过的文件

1
find . -type f -atime +7

少就是多的 less

.. note::

买下一张永久车票,登上一列永无终点的火车。
加西亚马尔克斯 《百年孤独》

Linux系统如果希望查阅文件,有三个命令,是在命令行里面,如果GUI界面,请自行绕过,选择太多了。

  • cat 入门级的
  • more 文件内容一屏幕装不下的时候使用的
  • less 可以简单地认为是more的升级版 , 首推

我首推less命令的原因是该命令可以往回卷动浏览已经看过的部分,但是more是不可以的。或者可以认为less是查看模式下的vim

首先看看为什么用less命令吧。

If the file is longer than the size of Terminal window then it will be not easy to read or view all the content of the file easily. But there is a tweak, you can use less with cat command. It will give user an ability to scroll forward and backward through the content of the files using PgUp and PgDn keys or Up and Down Arrow keys on the keyboard.

如题,在文件内容足够多的时候,屏幕足够不大的时候,就会出现上面描述的问题,这就出现了less命令。

Linux系统可以说把少就是多这个哲学用到了极致,恰如小巧优美的C语言,不该有的功能坚决不给你提供,应该有的也不给你提供,哈哈,比如内存的管理,程序员就是神,你就是神。

命令简介

less - opposite of more # 我觉得这是废话

我嘞个去,什么鬼?这是什么意思,我也知道少的反义词是多,大的反义词是小。

别急,那就看看more的含义吧,不会是 opposite of less 吧。OMG

more - file perusal filter for crt viewing

什么意思,淡定,听我说,在Linux系统中有三种命令可以用来查阅全部的文件,分别是catmoreless命令,关于more的解释主要针对在上古年代的计算机,你不理解crt也没有关系,毕竟现在已经是Retina的年代了。

一起看看下面的实例吧。

命令格式

1
$ less [参数] 文件

与其他命令类似,直接跟上文件名即可。

接下来依旧使用/etc/services来进行示例。

-m 显示类似more命令的百分比

这个是more命令比较好用的一个功能,可以显示目前浏览的百分比。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ less -m /etc/services

auditd 48/udp # Digital Audit Daemon
la-maint 51/tcp # IMP Logical Address Maintenance
la-maint 51/udp # IMP Logical Address Maintenance
xns-time 52/tcp # XNS Time Protocol
xns-time 52/udp # XNS Time Protocol
xns-ch 54/tcp # XNS Clearinghouse
xns-ch 54/udp # XNS Clearinghouse
isi-gl 55/tcp # ISI Graphics Language
isi-gl 55/udp # ISI Graphics Language
xns-auth 56/tcp # XNS Authentication
xns-auth 56/udp # XNS Authentication
xns-mail 58/tcp # XNS Mail
xns-mail 58/udp # XNS Mail
ni-mail 61/tcp # NI MAIL
ni-mail 61/udp # NI MAIL
5%

此时可以在左下角看到,有个百分比。

-N 显示行号

使用-N可以实现cat中-n的效果,显示行号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 $ less -N /etc/services
1 # /etc/services:
2 # $Id: services,v 1.55 2013/04/14 ovasik Exp $
3 #
4 # Network services, Internet style
5 # IANA services version: last updated 2013-04-10
6 #
7 # Note that it is presently the policy of IANA to assign a single well-known
8 # port number for both TCP and UDP; hence, most entries here have two entries
9 # even if the protocol doesn't support UDP operations.
10 # Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports
11 # are included, only the more common ones.
12 #
13 # The latest IANA port assignments can be gotten from
14 # http://www.iana.org/assignments/port-numbers
15 # The Well Known Ports are those from 0 through 1023.
16 # The Registered Ports are those from 1024 through 49151

搜索字符串

在less中,可以比较容易的搜索字符串,比如可以:

  • / 字符串:向下搜索“字符串”的功能
  • ? 字符串:向上搜索“字符串”的功能
  • n:重复前一个搜索(与 / 或 ? 有关)
  • N:反向重复前一个搜索(与 / 或 ? 有关)

其实这些功能或者热键与vim相同。

在用less打开文件后,可以直接输入/number来搜索nubmer这个字符串,回车后可以看到该字符串高亮显示,这个也是优于more的一点;同样?number可以反向搜索number字符串。

可以通过-i选项来忽略搜索时的大小写

设置缓冲区的大小

可以通过-b <缓冲区大小> 设置缓冲区的大小,这个一般用于文件很大、巨大、不是一般大的时候,此时你的内容可能不足以承载打开整个文件,比如4G的内存,而你却要打开10G的文件,此时可以通过该选项来设置,默认单位为KB,比如

1
$ less -b 1024 filename

即打开1024KB的文件缓冲

编辑less浏览的文件

要编辑一个正在用 less 浏览的文件,可以按下v。你就可以用变量$EDITOR所指定的编辑器来编辑了: 按下v键来编辑文件,退出编辑器后,你可以继续用less浏览了。

移动

我比较喜欢less的原因是对于该命令的很多操作都是与vim相同,而我是一个重度vimer,so 推荐less

说几个比较简单的移动:

  • j 向下移动
  • k 向上移动
  • g 移动到第一行
  • G 移动到最后一行
  • b 向后翻一页
  • d 向后翻半页
  • u 向前滚动半页
  • y 向前滚动一行
  • 空格键 滚动一行
  • 回车键 滚动一页