shell:根据名称中的模式进行文件管理

用户3470313

我正在处理位于同一目录中的12个填充。填充的名称以由 _ 分隔的多列格式给出。这是那 12 个填充:

7000_01_lig_cne_767.dlg 7000_05_lig_cne_767.dlg 7000_09_lig_cne_767.dlg
7000_02_lig_cne_767.dlg 7000_06_lig_cne_767.dlg 7000_10_lig_cne_767.dlg
7000_03_lig_cne_767.dlg 7000_07_lig_cne_767.dlg 7000_11_lig_cne_767.dlg
7000_04_lig_cne_767.dlg 7000_08_lig_cne_767.dlg 7000_12_lig_cne_767.dlg

在这里,填充之间的差异在第二列(从1到12)中给出,所有名称保持相同

我需要编写一个适合循环这些文件的简单 bash 工作流程,为每个文件创建一个目录(包含来自其第二列的数字,用作描述它们之间的模式),然后复制特定文件(例如 7000_04_lig_cne_767 .dlg) 进入此目录 (box_04)。因此,每个创建的子文件夹应仅包含1个文件。这是我的模板:

#!/bin/bash
#set the name of folder with all DLG
FILES=$PWD/ALL_DLG

#name of the subfolder in which several subfolders (containing one of the input file) whould be created
output=${home}/sub_folders_to_analyse


# manage DLG filles
for i in ${FILES}/*.dlg       
do 
    # write some expression to take the file according to the number indicated within its second column
    # n = is the number occured in the second column;
    # manage the files to proper directories
    mkdir -p ${output}/"box_$n"
    cp "$i" ${output}/"box_$n"
done

我想在 for 循环中定义的 n 应该包含一些基于 SED 的表达式,这些表达式引用了第二列的编号(在每个文件的名称中)。

管理员蜜蜂

由于您的文件名结构相当规则,您可以cut用来提取该字段。但是,正如@steeldriver 所指出的,由于您的文件路径$PWD/ALL_DLG已经包含一个_,您要么必须明确考虑这一点,要么使用该basename命令确保该操作仅应用于实际文件名,而不是任何路径组件:

n=$(basename "$f" | cut -d'_' -f 2)

会将cut命令(_用作字段分隔符)应用于文件名,并提取第二个字段(即您要标识的数字)。然后它会n通过命令替换将结果写入 shell 变量

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用BufferedInput / OutputStream进行文件管理

来自分类Dev

根据模式删除shell中的文件扩展名

来自分类Dev

根据文件在 shell 脚本中的名称组织文件夹中的文件

来自分类Dev

使用生成的名称调用进行文件修订

来自分类Dev

在文件管理器中按名称的第n个字符对文件进行排序?

来自分类Dev

shell:根据多行格式的列模式进行处理

来自分类Dev

根据文件中的部分名称复制文件

来自分类Dev

从文件中读取比赛结果,并根据相关分数按字母顺序对名称进行排序

来自分类Dev

bash用模式替换文件中的多行文本

来自分类Dev

python根据名称将一个列表中的文件与另一个列表中的文件进行匹配

来自分类Dev

根据模式删除txt文件中的行

来自分类Dev

根据部分名称删除目录中的文件

来自分类Dev

根据名称中的符号重命名文件

来自分类Dev

根据部分名称删除目录中的文件

来自分类Dev

用变量替换Shell中的多行文件

来自分类Dev

使用C进行文件锁定和解锁,并编写Shell脚本进行测试

来自分类Dev

在python输入中解释〜/以进行文件读写

来自分类Dev

使用C中的结构进行文件I / O提取

来自分类Dev

通过使用 AWK 或脚本进行文本处理来管理大文件

来自分类Dev

根据文件名中的特定模式移动文件

来自分类Dev

根据文件中的模式拆分为两个文件

来自分类Dev

使用表列名称映射 XML 属性/元素以进行文件导入

来自分类Dev

要根据列表中的元素进行过滤的模式?

来自分类Dev

根据模式文件排序

来自分类Dev

如何使用bash shell参数扩展进行文件名操作

来自分类Dev

如何根据名称对PHP中的数组进行排序?

来自分类Dev

如何根据名称对PHP中的数组进行排序?

来自分类Dev

在shell脚本中以哪种平台无关的方式查找shell可执行文件的目录?

来自分类Dev

如何在Fedora 21中强制进行文本模式安装

Related 相关文章

  1. 1

    使用BufferedInput / OutputStream进行文件管理

  2. 2

    根据模式删除shell中的文件扩展名

  3. 3

    根据文件在 shell 脚本中的名称组织文件夹中的文件

  4. 4

    使用生成的名称调用进行文件修订

  5. 5

    在文件管理器中按名称的第n个字符对文件进行排序?

  6. 6

    shell:根据多行格式的列模式进行处理

  7. 7

    根据文件中的部分名称复制文件

  8. 8

    从文件中读取比赛结果,并根据相关分数按字母顺序对名称进行排序

  9. 9

    bash用模式替换文件中的多行文本

  10. 10

    python根据名称将一个列表中的文件与另一个列表中的文件进行匹配

  11. 11

    根据模式删除txt文件中的行

  12. 12

    根据部分名称删除目录中的文件

  13. 13

    根据名称中的符号重命名文件

  14. 14

    根据部分名称删除目录中的文件

  15. 15

    用变量替换Shell中的多行文件

  16. 16

    使用C进行文件锁定和解锁,并编写Shell脚本进行测试

  17. 17

    在python输入中解释〜/以进行文件读写

  18. 18

    使用C中的结构进行文件I / O提取

  19. 19

    通过使用 AWK 或脚本进行文本处理来管理大文件

  20. 20

    根据文件名中的特定模式移动文件

  21. 21

    根据文件中的模式拆分为两个文件

  22. 22

    使用表列名称映射 XML 属性/元素以进行文件导入

  23. 23

    要根据列表中的元素进行过滤的模式?

  24. 24

    根据模式文件排序

  25. 25

    如何使用bash shell参数扩展进行文件名操作

  26. 26

    如何根据名称对PHP中的数组进行排序?

  27. 27

    如何根据名称对PHP中的数组进行排序?

  28. 28

    在shell脚本中以哪种平台无关的方式查找shell可执行文件的目录?

  29. 29

    如何在Fedora 21中强制进行文本模式安装

热门标签

归档