我的系统每天创建一个文件夹,每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个字符。 可能是一个非常简单的问题,但我无法理解它。
答案 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)
我认为您正在尝试合并ls
和find
的输出。为此,将一个命令输入另一个命令不起作用。相反,在子shell中一起运行它们:
(ls; find) | xargs...