虽然在几次迭代后ubuntu中的循环崩溃

时间:2015-01-30 10:54:43

标签: bash loops ubuntu while-loop

我有一个包含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)个文件夹然后停止。 我确信这是非常微不足道的,但我真的不明白。

1 个答案:

答案 0 :(得分:0)

您无法使用<从多个文件重定向。相反,您可以使用

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

或者只是

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

cat将连接它给出的文件并将它们写入stdout,这样你就有了一个文件描述符,从中可以读取所有文件的内容,并且可以用作a的端点。管道到循环(或xargs')stdin。