awk:打印多个文件,每个文件放到一个新文件夹中。从输入文件中提取的文件夹名称

马特

我正在努力将 mkdir 添加到 awk 行中。

输入.txt:

A1 B1
A2 B2
A3 B3

目的:将每一行打印到一个新文件中。每个新文件都应具有相同的名称,例如“file.txt”。每个新文件都应打印到其自己的新文件夹中。文件夹名称应取自输入文件中相应行的第一个字段。结果文件夹结构:

home
|__input.txt
|
|__A1
|  |__file.txt
|
|__A2
|  |__file.txt
|
|__A3
|  |__file.txt

我的 awk 使用输入中的文件名创建文件:

$ awk '{F = $1".txt"} {print > F}' input.txt

我的 awk 使用输入中的文件夹名称创建文件夹:

$ awk '{print "mkdir "$1}' input.txt | sh

但是如何组合这些并使用输入中的文件夹名称创建文件夹但保持相同的文件名“file.txt”?

加西莫多

您并不是真的“将 mkdir 添加到 awk 行中”。您将 awk 的输出通过管道传输到 shell。我认为这最好用一个 shell 脚本来完成(无论如何你都需要 shell 来调用mkdir):

input=input.txt
newfile=file.txt
while IFS= read -r line; do
    first="${line% *}"                #This means "the line up to first space"
    mkdir "$first"
    echo "$line" > "$first/$newfile"
done < "$input"

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Makefile:循环文件夹并将文件合并到一个新文件中

使每个挂载在dropzone js上传目录中成为一个新文件夹

创建一个新文件夹,然后在该文件夹中插入文件。Google云端硬碟

如何将所有文件(文件夹中每个子文件夹中的最新文件除外)压缩到每个子文件夹一个ZIP文件中?

通过Ubuntu终端提取几个zip文件,每个同名的新文件夹中

使用Powershell监视文件夹中的新文件,但忽略新文件夹

为文件夹中的每个文件创建一个文件夹,但不包含文件夹本身

打开文件并在同一文件夹中创建一个新文件

列出每个子文件夹的最新文件

在每个子文件夹中创建一个带有特定名称的空文件的文件夹

根据今天的日期创建一个文件夹,然后使用批处理文件将文件复制到新文件夹中

Powershell - 列出目录中的所有文件夹,在每个文件夹中提取最新的 .bak 文件,压缩它,将其复制到一个目录

将文件从多个文件夹复制到新文件夹-文件具有相同的名称

比较一个文件夹中的文件数以检查是否有新文件

如何制作一个指向“特定文件夹中的最新文件”的 .desktop 文件?

我想创建一个其中包含三个新文件夹的文件夹

在Nautilus中创建一个新文件夹

Gitlab应该使用现有文件夹时创建了一个新文件夹

查找文件夹的最高价值,创建一个新文件夹

重命名前一个文件夹中的datetime后如何将文件移动到新文件夹

7z命令:在创建的新文件夹中提取压缩文件

如何使用PowerShell替换多个文件中的文本并将每个文件保存在新文件夹中?

当 Firebase 存储中有一个名为相同的现有文件夹时,如何在 Firebase 中创建一个新文件夹

打开Linux文件夹中的最新文件

如何获取文件夹中的最新文件?

文件夹中的最新文件

vba遍历文件夹中的新文件

在文件夹中打开最新文件(jpg)

在目录的每个子文件夹中创建一个文件夹?