linux工作中常用文件操作命令

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/details/77714264

本文主要是本人在使用linux的时候操作文件以及目录的常见的命令,主要内容如下:

  • ls 按照时间修改顺序列出文件,以M/G方式(human readable)显示出文件(如ls -lth) ,显示隐藏文件等
  • 判断文件是否存在test -f filename && echo “File exists”
  • 通配符文件的删除
  • 文件的移动(少了以及大量),批量重命名等
  • SecureCRT linux与win10下文件的传送(rz, sz)例如linux下大批量的文件传输到win10下
  • dh (disk usage) 目录大小查看,排序
  • linux文件(主要是代码的树型查看)
  • 文件查找(locate /find)

转载注明出处哈 “http://blog.csdn.net/haluoluo211/article/details/77714264


ls

前段时间在linux上面跑C++程序的时候,偶尔程序会挂掉,这个时候我们需要通过core dump文件定位问题。而core dump文件有一大推我们需要安装最新的修改时间排序,显示的大小等信息:

然后在 sudo gdb AntiChatFilterd /data/core_files/core-AntiC659 通过gdb调试(注意上面省略了一些字符)

显示所有的文件,包括隐藏文件:ls -a 或者ls -ld .?*

按照最近修改时间排序 ls -lt (反向排序在ls -lrt)

最常用还有比如回到上一层目录 cd -

判断文件是否存在: test -f filename && echo “File exists”

通配符删除文件


一般 rm -f filename删除文件 比如我们要删除多个文件 rm -f 1.jpg 2.jpg 或者 rm -f {1,2}.jpg

rm -f *.jpg 删除所有的jpg

当rm 删除文件列表太长可以使用for循环 for f in *.pdf; do rm “$f”; done

文件移动重命名


比如重命名目录 mv /home/user/oldname /home/user/newname

当我们移动很多文件的时候,往往会报错参数太长 下面给出一个自己的示例

awk -F, ‘NR>1&&2==1{print2==1{print 1}’ submission_model_1_v1.csv | xargs mv –target-directory=result_1

上面通过 xagrs 把所有的图片通过参数,然后 mv到target directory中

或者(下面是移动文件并按照 0000x.jpg格式化重命名) find -name ‘*.jpg’ \ # find jpg s | awk ‘BEGIN{ a=0 }{ printf “mv \”%s\” %04d.jpg\n”, $0, a++ }’ # build mv command | bash # run that command

文件批量重命名


比如我要把目录下所有的 png->jpg

rename 's/\.png$/\.jpg/' *.png
# 或者
for file in *.png
do
 mv "$file" "${file%.png}.jpg"
done

又比如想按照 0001~0010 ,jpg 这样的形式命名可以

find -name '*.jpg' \  # find png s
| awk 'BEGIN{ a=0 }{ printf "mv \"%s\" %04d.jpg\n", $0, a++ }'  # build mv command
| bash # run that command

sz /rz (以及批量linux文件->win10)


一般 sudo rz -bey (覆盖原有文件,一般不会传送终止,如果终止了一般 disconnect SecureCRT 然后重新回到目录下 rz -bey 即可)

linux文件-》win10下 一般 sz filename即可

但是传送大量文件就有问题,参数太长 也可以类似上面的for 循环

#!/bin/sh
read -p "input the class num: " class
class_num=`awk '$2=='$class' {class_num+=1;} END {print class_num}' train.txt`
echo "$class  sample size is: $class_num"

read -p "input the num of how many samples you wants to download: " download_num
step=$((class_num / download_num))
echo "step size is $step"
# all_files-> a.jpg b.jpg c.jpg
all_files=`awk -v c="$class" '$2==c {print $1} ' train.txt `
d_f=" "
count=0
for i in $all_files
do
    count=$(($count+1))
    if [ $count -eq $step ]
    then
        count=0
        d_f="$d_f  $i"  #there is a space between two variable
    fi 
done
echo "after for loop, the end of sz"
cd /data5/light/storm_1_1/images
sudo sz $d_f
cd -

其中 train.txt 部分内容如下:

head -2 train.txt 
train/4C0/4C0B77F76A1C58DE372F984AA8A807BEFF04F63A.png 0
train/4C0/4C0A77546E80894F8F89EE8D7AB8C7E159A99193.png 0

tail -2 train.txt 
train/64f/64fc3277521ff37177cbb43329b891dcb8f01203.png 27
train/9C9/9C999B0A7FBEA214C3C8546549447A9902151ACB.png 16

dh (disk usage) 目录大小查看,排序


先上个简单示例,查看boost的这个目录大小:

-h, --human-readable  print sizes in human readable 
format (e.g., 1K 234M 2G)(以合适的方式显示文件大小)
-s, --summarize display only a total for each
 argument(显示总的大小)

dh -h --max-depth=1 *

sort -h 按照大小排序,-r反向排序(故而最大的在第一个)


linux文件(主要是代码的树型查看)


tree ( 查看项目的目录结构) sudo apt-get install tree

tree -d

etc
|-- abrt
|   |-- abrt-action-save-package-data.conf
|   |-- abrt.conf
|   |-- gpg_keys
|   `-- plugins
|       |-- CCpp.conf
|       `-- python.conf

转载注明出处哈 “http://blog.csdn.net/haluoluo211/article/details/77714264

文件查找(locate /find)


文件查找主要是find/locate一般locate查找比较快,但记得sudo updatedb(如果长时间没有更新)

locate -i new.txt (-i 忽略大小写Ignore Case ) find / -name “filename” 目的:在根目录“/”开始搜被称为filename的文件,“filename”文件名可以包含通配符(*,?)

Regular files only(当前目录下查找以my开头的文件查找) $ find . -name ‘my*’ -type f

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JarvanMo的IT专栏

Node.js文件路径的坑

没错,我想读取system-config.json中的配置。刚开始,无论如何也读不到,连个错误信息也没有。调试了一番,终于出了一个错误信息: no such ...

21740
来自专栏黑泽君的专栏

用gcc编译c语言程序以及其编译过程

对于初学c语言编程的我们来说,学会如何使用gcc编译器工具,对理解c语言的执行过程,加深对c语言的理解很重要!!!

18210
来自专栏FreeBuf

打造一款属于自己的远程控制软件(二)

前一篇文章介绍了软件的整体架构,接下来对被控端进行详细讲解,主要介绍被控端各个功能模块的关键技术以及开发过程中遇到的坑,希望对各位读者有借鉴作用。 被控端工作流...

31350
来自专栏JavaEdge

Redis 客户端服务端交互1 客户端/服务端协议

Redis实例运行在单独的进程中,应用系统(Redis客户端)通过Redis协议和Redis Server 进行交互

11420
来自专栏前端杂货铺

深入seajs源码系列一

简述         前端开发模块化已经是大势所趋,目前模块化的规范有很多,众所周知的有commonJS,Module/Wrappings和AMD等,而且ES6...

31890
来自专栏北京马哥教育

用 Python 脚本实现对 Linux 服务器的监控

目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件)、 glances(资...

64760
来自专栏小樱的经验随笔

【Python Learning第一篇】Linux命令学习及Vim命令的使用

学了两天,终于把基本命令学完了,掌握以后可以当半个程序员了♪(^∇^*) 此文是一篇备忘录或者查询笔记,如果哪位大佬看上了并且非常嫌弃的话,还请大佬不吝赐教,多...

399100
来自专栏生信宝典

Linux学习-常见错误和快捷操作

Linux下命令的一些异常情况 命令不全:在命令没有输入完 (引号或括号没有配对),就不小心按下了Enter键,终端会提示出一个>代表命令不完整,这是可以继续输...

22850
来自专栏生信宝典

Linux学习-常见错误和快捷操作

Linux下命令的一些异常情况 命令不全:在命令没有输入完 (引号或括号没有配对),就不小心按下了Enter键,终端会提示出一个>代表命令不完整,这是可以继续输...

21850
来自专栏AzMark

Python 学习之进程与线程 「 上 」

进程:对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器(任务)就是启动一个浏览器进程。进程是系统中程序执行和资源分配的基本单位,每个...

7620

扫码关注云+社区

领取腾讯云代金券