Bash 脚本到 mkdir 已被分隔符分割的文件的每一行?

phi*_*o.O 4 linux bash xargs

试图找出如何.txt逐行遍历文件 (filemappings.txt),然后使用tab( \t) 作为分隔符拆分每一行,以便我们可以创建选项卡 ( mkdir -p)右侧指定的目录。

读取 filemappings.txt 然后将每一行拆分为 tab

server/ /client/app/
server/a/   /client/app/a/
server/b/   /client/app/b/
Run Code Online (Sandbox Code Playgroud)

会变成

mkdir -p /client/app/
mkdir -p /client/app/a/
mkdir -p /client/app/b/
Run Code Online (Sandbox Code Playgroud)

xargs是一个不错的选择吗?为什么或者为什么不?

Jos*_*hua 5

cut -f 2 filemappings.txt | tr '\n' '\0' | xargs -0 mkdir -p 
Run Code Online (Sandbox Code Playgroud)

xargs -0 非常适合向量运算。

  • 你可能是说`-f2`?我认为你可以只使用 `xargs -d'\n' ...`。我认为将 `\n` 转换为 `\0` 然后使用 `xargs -0` 没有任何意义(也许有区别?)。 (2认同)
  • 因为 [这对 OP 来说并不明显](/sf/ask/3381400711/ split-by-a-delimiter) 可能指出 `xargs` 将尽可能少地运行 `mkdir -p` 并使用多个目录作为其参数。这工作正常,并且对于接受任意文件或目录名称列表作为参数的命令是一个很好的优化;但在其他一些场景中显然不太理想。 (2认同)