gpt4 book ai didi

Linux Shell 脚本文件和目录循环

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:12 26 4
gpt4 key购买 nike

我想在 Linux 中编写一个 shell 脚本,循环遍历所有目录和子目录,并对所有文本文件进行 cat 一次。以下是我到目前为止所得到的,我在这方面有点落后于逻辑。有人可以帮我吗?谢谢

脚本接受 1 个参数例如:./script.sh 目录名

#!/bin/bash

echo "Directory $1"

cd $1
for f in *.txt
do
cat $f
done

我不确定如何从这里进入子目录,因为每个子目录中可以有无限数量。

最佳答案

使用查找

如果您的操作系统支持现代版本的 POSIX:

find "$1" -type f -name '*.txt' -exec cat '{}' +

...或者,如果没有:

find "$1" -type f -name '*.txt' -exec cat '{}' ';'

...或者,如果你想降低效率(或者有一个你没有告诉我们的更有趣的用例),并且你的 find 支持 -print0...

find "$1" -type f -name '*.txt' -print0 | \
while IFS='' read -r -d '' filename; do
cat "$filename"
done

不要遗漏 -print0 -- 否则,恶意命名的文件(名称中有换行符)可以将任意名称注入(inject)您的流(最坏的情况),或隐藏处理 (充其量)。

关于Linux Shell 脚本文件和目录循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19104709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com