每个文件夹的多个文件夹的#bash递归连接

时间:2014-11-14 10:21:31

标签: bash

我的系统每天创建一个文件夹,每10分钟生成一个txt文件。

我需要编写一个bash脚本,每天从start文件夹运行,每天将所有txt文件合并到一个文件中,并将此文件写入目标文件夹。

我的最后一个解决方案是这样的

for i in $dirm;
do
    ls -1U  | find . -name "*.txt" | xargs cat *.txt > all
    cut -c 1-80 $i/all > $i/${i##*/}
.....
done

出于某种原因,我无法通过每个文件夹获得正确的循环。这会找到所有.txt。但不是每个文件夹。切割的东西是我只需要前80个字符。 可能是一个非常简单的问题,但我无法理解它。

2 个答案:

答案 0 :(得分:1)

我假设$ dirm是目录列表,那么你应该从find $i而不是当前目录(。)

for i in $dirm;
do
    ls -1U  | find $i -name "*.txt" | xargs cat *.txt > all
    cut -c 1-80 $i/all > $i/${i##*/}
.....
done

答案 1 :(得分:0)

我认为您正在尝试合并lsfind的输出。为此,将一个命令输入另一个命令不起作用。相反,在子shell中一起运行它们:

(ls; find) | xargs...
相关问题