Linux 下三种提升工做效率的文件处理技巧

Linux 下三种提升工做效率的文件处理技巧

Mbo3s1.jpg

在 Linux 下工做,打交道最多的就是文件了,毕竟 Linux 下工做一切皆文件嘛。Linux 也为你们提供了多种用于处理文件的命令,合理使用这些命令能够大大节省你的时间,并让咱们的工做负担再也不那么沉重。linux

寻找文件的技巧

当咱们查找文件时,第一时间想到的确定是 find 命令。可是若是咱们搜索的路径范围比较大时,花费的时间会比较多,在这个状况下 find 命令就不是最优的方式了。面试

咱们可使用 ls 快速找到近期更新的文件。好比,想知道本身昨天离开办公室回家前调用的脚本吗?小case嘛!使用 ls 命令并加上 -ltr 选项。最后一个列出的将是最近建立或更新的文件。spa

$ ls -ltr ~/bin | tail -3
-rwx------ 1 shs shs   229 Sep 22 19:37 checkCPU
-rwx------ 1 shs shs   285 Sep 22 19:37 ff
-rwxrw-r-- 1 shs shs  1629 Sep 22 19:37 test2复制代码

若是咱们仅仅想列出今天更新的文件,能够这样操做:.net

$ ls -al --time-style=+%D | grep `date +%D`
drwxr-xr-x  60 shs  shs       69632 09/23/19 .
drwxrwxr-x   2 shs  shs     8052736 09/23/19 bin
-rw-rw-r--   1 shs  shs         506 09/23/19 stats复制代码

若是咱们想要查找的文件可能不在当前目录中,那么 find 将比 ls 更加灵活强大。可是,find 命令的输出结果可能会比较多,咱们可使用它的一些选项来过滤掉本身不想要的结果。命令行

好比,在下面的命令中,咱们不搜索以点开头的目录(即隐藏目录),指定咱们要查找的是文件而不是目录,并要求仅显示最近一天更新过的文件。code

命令以下:cdn

$ find . -not -path '*/\.*' -type f -mtime -1 -ls
   917517      0 -rwxrw-r--   1 shs      shs          683 Sep 23 11:00 ./newscript复制代码

注意 -not 选项反转了 -path 的行为,所以咱们不会搜索以点开头的子目录。blog

若是咱们只想查找最大的文件和目录,那么可使用相似 du 这样的命令,它会按大小列出当前目录的内容。而后,再将输出的内容经过管道传输到 tail 命令,仅查看最大的几个。排序

$ du -kx | egrep -v "\./.+/" | sort -n | tail -5
918984      ./reports
1053980     ./notes
1217932     ./.cache
31470204    ./photos
39771212    .复制代码

-k 选项让 du 以块列出文件大小,而 x 可防止其遍历其余文件系统上的目录(例如,经过符号连接引用)。命令运行后,du 命令会先列出文件大小,而后再调用 sort -n 来按照大小排序。递归

统计文件数量的技巧

使用 find 命令能够很容易地计数任何特定目录中的文件。不过你们要注意的是,find 会递归到子目录中,并将这些子目录中的文件与当前目录中的文件一块儿计数。

好比,咱们想计数一个特定用户(alvin)的主目录中的文件,咱们能够先用 find 命令找到文件,再用 wc 命令进行统计。

$ find /home/alvin -type f 2>/dev/null | wc -l
35624复制代码

请注意,咱们将 find 命令的错误输出发送到 /dev/null,为了不搜索相似 ~/.cache 这类没法搜索而且对它的内容也不感兴趣的文件夹。

必要时,咱们可使用 -maxdepth 1 选项将 find 搜索范围限制在单个目录中,或者也能够将其设置为本身想要搜索的深度:

$ find /home/alvin -maxdepth 1 -type f | wc -l
387复制代码
文件重命名的技巧

使用 mv 命令能够很容易地重命名一个文件,可是有时咱们想重命名大量文件,而且不想花费大量时间,要怎么操做呢?这个时候 rename 命令就要派上用场了。

例如,咱们想要将当前目录下全部文件的文件名中含有空格的所有更改成下划线,你们可使用以下命令:

$ rename 's/ /_/g' *复制代码

你们应该能想到,此命令行中的 g 表明「全局」。这就意味着该命令会将文件名中的全部空格更改成下划线,而不单单是第一个。

若是咱们想要把文本的文件删除掉 .txt 扩展名,可使用以下命令:

$ rename 's/.txt//g' *复制代码

看完的都是真爱,点个赞再走呗?您的「三连」就是良许持续创做的最大动力!

  1. 关注原创公众号「良许Linux」,第一时间获取最新Linux干货!
  2. 公众号后台回复【资料】【面试】【简历】获取精选一线大厂面试、自我提高、简历等资料。
  3. 关注个人博客:lxlinux.net
相关文章
相关标签/搜索