Bash——Shell使用笔记


显示目录占用空间大小

  • 显示第一层目录大小(人类可读格式,如 M/G)

    1
    du -sh */
    • 命令解释:
      • du:统计当前目录下的第一级下,所有子目录/文件的磁盘占用;
      • -s--summarize):只显示总大小(不列出子文件/子目录的详细大小);
      • -h--human-readable):用人类易读的单位(K/M/G)显示;
      • */:通配符,只匹配当前目录下的「第一层子目录」(结尾的 / 是关键,排除文件,只选目录);
    • 这个命令 Mac 也可以使用
    • 在 Linux 里面,这个命令的等价命令是 du -h ./ --max-depth=1
  • 显示当前目录大小(人类可读格式,如 M/G)

    1
    du -sh ./
    • 命令解释:
      • du:统计当前目录的总磁盘占用
      • -s--summarize):只显示总大小(不列出子文件/子目录的详细大小);
      • -h--human-readable):用人类易读的单位(K/M/G)显示;
      • ./:只匹配当前目录
  • 显示当前目录下,指定层级的目录磁盘占用情况

    1
    2
    # 以最大 2 级子文件夹为例(包括第一级)
    du -h ./ --max-depth=2
    • 命令解释:
      • du:统计当前目录下的第一级下,所有子目录/文件的磁盘占用;
      • -h--human-readable):用人类易读的单位(K/M/G)显示;
      • ./:只匹配当前目录
      • --max-depth=2:最深到两级目录

递归删除某个文件夹下的某个名称文件

  • 假设目标文件夹是 /path/to/dir

  • 在执行删除前,先用 -print 检查匹配结果,确保不会误删:

    1
    find /path/to/dir -type f -name "xxx.pt" -print
    • find:递归查找文件
    • /path/to/dir:替换为你的目标目录路径
    • -type f:只匹配普通文件
    • -name "xxx.pt":匹配文件名为 xxx.pt
    • -print:输出匹配结果
  • 删除上述匹配的文件:

    1
    find /path/to/dir -type f -name "xxx.pt" -delete
    • -delete:直接删除匹配到的文件
  • 补充:如果需要匹配所有以 .pt 结尾的文件(比如 model.ptxxx.pt 等),可以这样写:

    1
    find /path/to/dir -type f -name "*.pt" -delete

搜索符合预期规则的文件并合并

  • 以合并前缀相同的 .jsonl 文件为例:

    1
    ls -1 /user/prefix_* | grep -E "/user/prefix_[0-9]+\.jsonl" | sort -V | xargs cat > path_to_output
    • 单独使用 ls -1 /user/prefix_* | grep -E "/user/prefix_[0-9]+\.jsonl" | sort -V 可以按照顺序打印文件名称
    • 如果不需要排序可以删除 sort -V 参数