【问题标题】:While loop in ubuntu crash after few iteration几次迭代后,ubuntu中的while循环崩溃
【发布时间】:2015-01-30 10:54:43
【问题描述】:

我有一个包含 1000 行的文件,看起来像这样

978_Ad2_01000.fnc 979_Ad2_01001.fnc 97_Ad2_00098.fnc 981_Ad2_01003.fnc 982_Ad2_01004.fnc 983_Ad2_01005.fnc 984_Ad2_01006.fnc 985_Ad2_01007.fnc 986_Ad2_01008.fnc 988_Ad2_01010.fnc 98_Ad2_00099.fnc

我想创建与文件中的行数一样多的文件夹。 我写了这个小循环:

#! /bin/bash

while IFS= read -r line
do
    mkdir "$line"
done < ~/Desktop/*.txt

我想为我的目录中存在的多个 .txt 文件迭代此命令。这就是我解析的原因

 < ~/Desktop/*.txt.

问题在于它只读取并创建了几 (5) 个文件夹,然后就停止了。 我敢肯定这是一件微不足道的事情,但我真的不明白。

【问题讨论】:

  • 你为什么看*.txt
  • 它应该是包含上述行的文件。我想迭代多个 .txt 文件
  • ~/Desktop 中是否可能有多个 .txt 文件?
  • @Wintermute,是的,我想迭代到多个文件

标签: bash loops ubuntu while-loop


【解决方案1】:

您不能使用&lt; 从多个文件重定向。相反,您可以使用

cat ~/Desktop/*.txt | while IFS= read -r line; do
  mkdir "$line"
done

或者干脆

cat ~/Desktop/*.txt | xargs -d '\n' mkdir

cat 将连接给定的文件并将它们写入其标准输出,以便您拥有一个文件描述符,可以从中读取所有文件的内容,并且可以用作管道的端点循环的(或 xargs')标准输入。

【讨论】:

    猜你喜欢
    • 2021-11-17
    • 2015-03-23
    • 1970-01-01
    • 2018-03-15
    • 2016-04-23
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多