从文本文件中特定行的部分创建文件夹

用户名

我的父文件夹包括子文件夹。在每个子文件夹中,都有以下文件夹:

Parent_folder
folder1
  folder_01_PAP_515151
  folder_02_PAPA_554651
  folder_03_PAPX_541313
  folder_04_PAP_654123
folder2
  folder_20_PAP_413513
  folder_02_PAPD_521354
  folder_055_PAP_685413
  folder_100_PAP_132312
folder3
  folder_11_PAPE_5313351
  folder_32_PAP_3513131
  folder_53_PAP_3213321
  folder_84_PAP_3313213

..

我使用以下命令列出了所有包含“ PAP的文件夹和子文件夹,并将其保存在文本文件“ list.txt”中

find -type d -name "*_PAP_" > list.txt

输出如下:

  ./folder1/folder_01_PAP_515151
  ./folder1/folder_04_PAP_654123
  ./folder1/folder_20_PAP_413513
  ./folder2/folder_055_PAP_685413
  ./folder2/folder_100_PAP_132312
  ./folder3/folder_32_PAP_3513131
  ./folder3/folder_53_PAP_3213321
  ./folder3/folder_84_PAP_3313213

从这个列表中,我想创建一个新文件夹,这些新文件夹的名称必须包含“三个数字_PAP”部分,例如,上一个列表中的“ 055_PAP”,“ 32_PAP”,“ 53_PAP”...。新生成的文件夹的列表必须为:

 01_PAP
 04_PAP
 20_PAP
 055_PAP
 100_PAP
 32_PAP
 53_PAP
 84_PAP
ctrl-alt-delor

如果您有一个文件(名为,list包含以下内容),并且用来为文件中的每个行名创建一个目录,其中目录名仅位于./folder?/folder_之后

./folder1/folder_01_PAP_515151
./folder1/folder_04_PAP_654123
./folder2/folder_055_PAP_685413
./folder2/folder_100_PAP_132312
./folder3/folder_32_PAP_3513131
./folder3/folder_53_PAP_3213321
./folder3/folder_84_PAP_3313213

那你就可以做。

cat list | sed -r -e 's~[.]/folder[0-9]+/folder_~~' | xargs -I{} mkdir -p «prefix»{}

  • 我已经做到了,所以文件夹号是一个或多个数字。
  • 除非您需要前缀,否则将“前缀”留为空白。

如果您只想重命名原始文件夹/目录,并保留原始内容,则可以执行以下操作:

用这个测试。然后从重-n命名中删除,以实现它的真实效果。

find . -type d -name "*_PAP_" | rename -n 's~[.]/folder[0-9]+/folder_~~'

注意搜索模式是相同的rename,因为它是sedrename适用于文件名,sed适用于文件或流。

的选项sed

  • -r 使用扩展的正则表达式(要使用的正则方言)。
  • -e 下一个arg是表达式(sed程序)。
  • 's~[.]/folder[0-9]+/folder_~~' 用引号引起来的表达式,以便外壳程序不解释它。

表达式说明: s~[.]/folder[0-9]+/folder_~~

  • s 搜索并替换
  • ~分隔符将表达式分为几部分,您可以使用任何字符,但每次都必须使用相同的字符。s~«search_for»~«replace_with»~«options»或使用其他字符s@«search_for»@«replace_with»@«options»
  • «search_for»正则表达式:
    • [.] 一个点
    • /folder 正如它所说的那样。
    • [0-9] 一个数字。
    • + 一个或多个前面的原子(数字)(所以一个或多个数字)。
    • /folder_ 正如它所说的那样。
  • «replace_with»用什么替换,在这种情况下,什么也没有。
  • «option»在这种情况下,其他包括i忽略大小写,要g重复做一次以上(不仅是找到第一个字符串)。

sed/rename语言非常强大,但复杂。您将使用的主要部分s(如此处所用),也许接下来y是值得学习的部分。您还必须学习正则表达式(也由grep和其他命令使用)。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在特定目录中的文本文件中指定创建文件夹/子文件夹/文件

如何从文本文件中给定的路径创建文件夹和文件

未在 Swift 的 applicationSupport 文件夹中创建文本文件

在python中从两个不同的文件夹创建文本文件

将文本文件拖放到批处理文件中以创建文件夹

自动创建文件夹内容的文本文件

从多个文件夹中的多个文本文件读取特定行

从 excel 表创建文件夹和子文件夹和子文本文件

如何在 .NET 项目文件夹中创建文本文件,而不是在默认情况下的 bin/Debug 文件夹中

从部分名称在文本文件中的文件夹中选择 wav 文件

如何解决从文件夹中读取文件列表的文本文件以创建数据框行的问题

解析多个文件夹中的文本文件并创建新文件 [shell]

将文本文件中列出的特定文件从源文件夹复制到目标文件夹

在文件夹内创建文本文件,然后重命名文件夹以匹配其中的文件名

如何创建多个文件夹并通过从文本文件中读取行来命名它们?

无法将不同的文本文件放入在主文件夹中创建不同的子文件夹

使用文件夹名称在所有文件夹中创建空文本文件

创建文本文件

在ram中创建文本文件进行下载?

在可执行JAR中创建文本文件

从列表中的每个链接创建文本文件?

如何在Delphi中创建文本文件

在文件夹中创建一个文本文件

如何在子文件夹中搜索特定的文本文件

使用find命令从子文件夹中的文本文件中提取行

PHP创建文本文件-创建文本文件很困难

如何从具有相同名称的文本文件创建文件夹和文件,以插入具有相应名称的文件?

找不到目录文件夹内文件夹中的python文本文件

在文件夹中创建文件