gpt4 book ai didi

linux - 如何在 Bourne shell 脚本中打开目录中的所有文件?

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

如何在 shell 脚本中使用相对路径绝对路径 作为单个命令行参数?

例如,假设我的 shell 脚本在我的桌面上,我想遍历文件系统中某个文件夹中的所有文本文件。

我尝试了 sh myshscript.sh/home/user/Desktop,但这似乎不可行。以及如何避免目录名和文件名包含空格?

myshscript.sh 包含:

for i in `ls`
do
cat $i
done

最佳答案

从表面上看,你可以这样写:

cd "${1:-.}" || exit 1
for file in *
do
cat "$file"
done

除非在这种情况下你真的不需要 for 循环:

cd "${1:-.}" || exit 1
cat *

会完成这项工作。您可以通过以下方式避免 cd 操作:

cat "${1:-.}"/*

列出 (cats) 给定目录中的所有文件,即使目录或文件名包含空格、换行符或其他难以管理的字符。您可以使用任何适当的 glob 模式代替 * — 如果您想要文件以 .txt 结尾,则使用 *.txt 作为模式,例如。

如果您可能有太多文件以至于参数列表太长,这就会崩溃。在这种情况下,您可能需要使用 find:

find "${1:-.}" -type f -maxdepth 1 -exec cat {} +

(注意 -maxdepth 是 GNU find 扩展。)

避免使用 ls 生成文件名列表,尤其是当脚本必须在名称中的空格、换行符等方面保持健壮时。

关于linux - 如何在 Bourne shell 脚本中打开目录中的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21564564/

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