文章目录
  1. 1. find
  2. 2. ed
  3. 3. awk
  4. 4. zip
  5. 5. grep
  6. 6. split
  7. 7. apt-get
  • 检查当前 dpkg库中残留的文件安装信息
  • find

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    find . -name "*.[h|c|sh]"    #[sh]只能是s,或者是h, 不会去找sh
    find 。 -name "*.[h|c]" -o -name "*.sh" 应该用这个
    查找/etc/rc.d目录下面所有以crond结束的文件,并使用file指令查看其属性
    查找删除
    find . -name filename -exec rm -rf {} \;
    find . -name filename |xargs rm -rf
    磁盘中大于3M的文件
    find . -size +3000k -exec ls -ld {} \;
    find . -type f -exec grep “the string you want find...” {} ; -print #含特定字符串的文件
    find -name ".*" -perm -007 -007是指查找所有用户都可读、写、执行的文件
    find . -perm -100 -100是指权限至少是属主可运行. 在unix系统下,你可以拥有对目录文件的执行权你才可以进入一个目录.这便是目录文件被列出的原因.
    find *.c -exec cp '{}' /tmp ';'
    如果有特殊文件,可以用cpio,也可以用这样的语法:
    find dir -name filename -print | cpio -pdv newdir
    A=`find ~ -print` | ls -l --full-time $A 2>/dev/null | grep "Jun 27" | grep 1998 查找某一天更改的文件
    使用find 命令查找某个时间段的shell怎么写。比如11点到12点的。thanks
    创建一个脚本judgetime,内容如下:
    ls -l $*|awk '{split($8,hour,":");if((hour[1]>23 || hour[1] < 1)&&hour[1]<24)print}'
    到要查找的目录下,运行
    find ./ -name "*" -exec judgetime {} /;

    删除指定日期的文件
    find ./ -name 文件名 -exec rm -f {} /;
    例:删除当前30天内没用过的文件,用如下命令:
    find / -atime +30 -exec rm -f {} /;

    使用chown, chgrp, chmod命令可以很好的比较mtime和ctime
    chown改变一个文件的属主,用ctime可以找到,用mtime便找不到.
    访问一个文件不能改变inode信息.

    find / -size 1500c 字符 c 表明这个要查找的文件的大小是以bytes为单位
    find/ -size +10000000c 这个命令, 则标明我们指定系统在根目录中查找出大于10000000字节的文件
    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这个用户的文件

    find . -maxdepth 2 -name fred

    find / -user fred -or -user george 查找属于fred或者george这两个用户的文件。
    find /tmp ! -user panda
    find /tmp -size +10000000c -and -mtime +2

    我是在 Solaris 上面试的.我是对 -ctime 不明白.
    试的结果如下:
    修改文件,-mtime 改了, -ctime 也会改.
    访问文件,-atime 改了, -ctime 没变.
    chown, chgrp, chmod,mv, 都会使 -ctime 改变,但不影响 -atime 和 -mtime.
    touch 可以改 -mtime and/or -atime,但 touch -a 只改访问时间时,-ctime也改了.
    touch -m 改修改时间时,-ctime当然也改了.
    好象还有别的很多东西可以令 -ctime 改变, 搞不清楚.
    有什么方法可以显示 -mtime,atime,ctime 吗?
    可以用 -ctime 来实现对目录的增量文件进行备份或 transfer 吗 ?
    多谢!

    没有什么工具显示,(可能是俺不知道)
    把下面程序里的st_mtime换成st_ctime,或st_atime便可以得到你要的了.
    #i nclude
    int
    main (int argc, char **argv)
    {
    struct stat buf;
    char date[80];
    char fname[80];
    printf("Enter filename (with full path) to check mtime : ");
    scanf("%s",fname);
    stat(fname, &buf);
    printf ("mtime (in sec) of %s = %ld/n", fname, buf.st_mtime);
    strcpy(date, ctime((time_t *)&(buf.st_mtime)));
    printf ("mtime (in date) of %s = %s/n", fname, date);
    }

    #压缩文件的问题
    find . -name “.jpg” -exec tar -czf picture.tgz {} \; 命令执行完毕后,picture.tgz中只有一个文件
    find . -name “
    .jpg” | xargs tar -czf picture.tgz

    ed

    awk

    zip

    zip -rP a123 text.zip test.txt

    grep

    -P 有的linux下没有
    grep -Pnr “\d{3}” find -name "*.txt" # 只搜索某一类文件
    grep -Pnr “\d{3}” find |grep -P ".(txt|php)$" #只搜索某几类文件,如下,只搜索txt和php文件
    grep -Pnr “\d{3}” ls |grep -Fv weiba #排除含某关键词的子目录不搜索。如下,含“weiba”关键词的子目录不搜索
    grep -Pnr “\d{3}” ls |grep -Pv '^(weiba|huati)$'
    grep -Pnr “\d{3}” ls |grep -P '^(weiba|huati)$'
    正则表达式选择与解释:
    -E, –extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE)
    -F, –fixed-strings PATTERN 是一组由断行符分隔的定长字符串。
    -G, –basic-regexp PATTERN 是一个基本正则表达式(缩写为 BRE)
    -P, –perl-regexp PATTERN 是一个 Perl 正则表达式
    -e, –regexp=PATTERN 用 PATTERN 来进行匹配操作
    -f, –file=FILE 从 FILE 中取得 PATTERN
    -i, –ignore-case 忽略大小写
    -w, –word-regexp 强制 PATTERN 仅完全匹配字词
    -x, –line-regexp 强制 PATTERN 仅完全匹配一行
    -z, –null-data 一个 0 字节的数据行,但不是空行
    杂项:
    -s, –no-messages 不显示错误信息
    -v, –invert-match 选中不匹配的行
    -V, –version 显示版本信息并退出
    –help 显示此帮助并退出
    –mmap 忽略向后兼容性
    输出控制:
    -m, –max-count=NUM NUM 次匹配后停止
    -b, –byte-offset 输出行的同时打印字节偏移
    -n, –line-number 输出行的同时打印行号
    –line-buffered 每行输出清空
    -H, –with-filename 为每一匹配项打印文件名
    -h, –no-filename 输出时不显示文件名前缀
    –label=LABEL 标准输入将LABEL 打印为文件名
    -o, –only-matching 只显示一行中匹配PATTERN 的部分
    -q, –quiet, –silent 不显示所有输出
    –binary-files=TYPE 假定二进制文件的TYPE 类型;
    TYPE 可以是binary',text’, 或without-match' -a, --text 等同于 --binary-files=text -I 等同于 --binary-files=without-match -d, --directories=ACTION 操作目录的方式; ACTION 可以是read’, recurse',或skip’
    -D, –devices=ACTION 操作设备、先入先出队列、套接字的方式;
    ACTION 可以是read'或skip’
    -R, -r, –recursive 等同于 –directories=recurse
    –include=FILE_PATTERN 只查找匹配FILE_PATTERN 的文件
    –exclude=FILE_PATTERN 跳过匹配FILE_PATTERN 的文件和目录
    –exclude-from=FILE 跳过所有除FILE 以外的文件
    –exclude-dir=PATTERN 跳过所有匹配PATTERN 的目录。
    -L, –files-without-match 只打印不匹配FILEs 的文件名
    -l, –files-with-matches 只打印匹配FILES 的文件名
    -c, –count 只打印每个FILE 中的匹配行数目
    -T, –initial-tab 行首tabs 分隔(如有必要)
    -Z, –null 在FILE 文件最后打印空字符
    文件控制:
    -B, –before-context=NUM 打印以文本起始的NUM 行
    -A, –after-context=NUM 打印以文本结尾的NUM 行
    -C, –context=NUM 打印输出文本NUM 行
    -NUM 等同于 –context=NUM
    –color[=WHEN],
    –colour[=WHEN] 使用标志高亮匹配字串;
    WHEN 可以是always',never’或`auto’
    -U, –binary 不要清除行尾的CR 字符(MSDOS 模式)
    -u, –unix-byte-offsets 当CR 字符不存在,报告字节偏移(MSDOS 模式)

    split

    linux split含多个参数

    apt-get

    debian的源
    说明:
    1:deb/deb_src 表示获取安装包和源代码
    2:http://mirrors.163.com/debian/ 国内一般使用这个,Debian软件资源库
    3:stable 表示Debian系统的版本类型。stable/testing/unstable 三种

    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
    apt-get update # 更新软件包信息库。 
    apt-get upgrade package_name1 package_name2 package_name3 ... # 升级指定软件包至最新版本
    apt-get dist-upgrade #更新整个Debian系统
    apt-get install package_name1 package_name2 package_name3 ... # 安装新的软件包,安装的软件包默认会存放在/var/cache/apt/archives目录下,以便以后重新安装。
    如果已安装的软件包损坏了,你可通过–reinstall选项来重新安装。如:
    apt-get --reinstall install package_name
    使用–dry-run选项可使apt-get在安装软件包前进行测试,如:
    apt-get install package_name --dry-run
    apt-get remove package_name1 package_name2 package_name3 ... # 卸载指定软件包。
    如果你想把该软件的配置文件也删除,可以用–purge选项,如:
    apt-get --purge remove package_name
    apt-get source package_name1 package_name2 package_name3 ... #下载指定软件包的源码包文件
    apt-get build-dep #为源码包配置所需的构建依赖关系
    apt-get dselect-upgrade # 通过dselect的“建议”和“推荐”功能更新系统。
    apt-get clean #删除下载了的软件包, APT会把软件包下载到本地/var/cache/apt/archives/目录。
    apt-get autoclean #删除已下载的旧版本的软件包。该命令类似于上面的命令,但它会有选择地删除旧版本的软件包
    apt-get check #检查系统中已安装软件包的依赖性。

    apt-cache add package_name #往源缓存加入一个软件包文件
    apt-cache gencaches #并生成软件包和源代码包的缓存
    apt-cache showpkg pkgname #显示软件的信息,包括版本号,安装状态和包依赖关系等。
    apt-cache showsrc 显示源文件的各项记录
    stats显示一些基本的统计信息
    dump 简要显示整个缓存文件的内容
    dumpavail 把所有有效的包文件列表打印到标准输出
    unmet 显示所有未满足的依赖关系
    apt-cache search pkgname 搜索软件包,可用正则表达式(apt-cache search libc*)
    apt-cache show pkgname 以便于阅读的格式介绍该软件包
    apt-cache depends pkgname 显示指定软件包所依赖的软件包
    apt-cache rdepends pkgname 显示软件包的反向依赖关系,即有什么软件包需依赖你所指定的软件包
    apt-cache pkgnames 列出所有软件包的名字
    apt-cache dotty 生成可用 GraphVis 处理的软件包关系图
    apt-cache xvcg 生成可用 xvcg 处理的软件包的关系图
    apt-cache policy package_name 显示软件包的安装设置状态

    ### aptitude 命令
    该命令是调用交互模式,进行包的管理操作,和apt-get命令类似。

    aptitude [-S 文件名] [-u|-i]
    install – 安装/升级软件包
    remove – 卸载软件包
    purge – 卸载软件包并删除其配置文件
    hold – 将软件包置于保持状态
    unhold – 取消对一个软件包的保持命令
    markauto – 将软件包标记为自动安装
    unmarkauto – 将软件包标记为手动安装
    forbid-version – 禁止 aptitude 升级到某一特定版本的软件包。
    update – 下载新/可升级软件包列表
    upgrade – 执行一次安全的升级
    dist-upgrade – 执行升级,可能会安装和卸载软件包
    forget-new – 忘记哪些软件包是“新”的
    search – 按名称 和/或 表达式搜索软件包
    show – 显示一个软件包的详细信息
    clean – 删除已下载的软件包文件
    autoclean – 删除旧的已下载软件包文件
    changelog – 查看一个软件包的变更日志
    download – 下载软件包的 .deb 文件
    reinstall – 下载并(可能)重新安装一个现在已经安装了的软件包

    1
    2

    ### apt-key 每个发布的deb包,都是通过密钥认证的,apt-key用来管理密钥。

    apt-key list
    列出已保存在系统中key。
    apt-key add keyname
    把下载的key添加到本地trusted数据库中。
    apt-key del keyname
    从本地trusted数据库删除key。
    apt-key update
    更新本地trusted数据库,删除过期没用的key。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    ## netstat

    ##安装lxde图标显示 "X", 没有文件夹图标的解决方法:
    1. apt-get install libgdk-pixbuf2.0-dev
    然后设置 => 外观 里面设置为可用的主题比如 tango 就可以了
    2. http://askubuntu.com/questions/294834/some-icons-from-xfce4-panel-missing You can install latest development packages for the elementary icons theme from the elementary Xfce PPA (daily) . If you still encounter issues, feel free to report them on the project's GitHub tracker.
    To install the icons, as root:
    add-apt-repository ppa:landronimirc/elementary-xfce
    apt-get update
    apt-get install xubuntu-icon-theme


    ## 依赖关系问题 - 仍未被配置 子进程 已安装 post-installation 脚本 返回了错误号, 不用使用mv /var/lib/dpkg/info的方法

    尝试自动修复
    tiankonguse@tiankonguse:~$ sudo apt-get -f install
    尝试修复依赖
    tiankonguse@tiankonguse:~$ sudo dpkg –configure –pending
    先清空缓存
    sudo apt-get autoclean
    sudo apt-get clean
    sudo apt-get autoremove
    然后卸载
    sudo apt-get remove xxx
    cd /var/lib/dpkg
    sudo mv info info.bak
    sudo mkdir info
    sudo apt-get install -f
    dpkg:警告:files list file for package ‘*‘ missing; assuming package has no files currently installed
    解决

    检查当前 dpkg库中残留的文件安装信息

    dpkg -l | grep **

    #手 动删除所有包,这一步可能仍然会 有相关错误信息报出
    sudo dpkg -r * *

    #这一 步很重要,彻底清除任何包相 关的信息
    sudo dpkg -P
    *
    dpkg -l | grep

    ```

    文章目录
    1. 1. find
    2. 2. ed
    3. 3. awk
    4. 4. zip
    5. 5. grep
    6. 6. split
    7. 7. apt-get
  • 检查当前 dpkg库中残留的文件安装信息