gpt4 book ai didi

linux - 如何在 Bash 中识别多行字符串中的目录路径,替换为对自己文件内容的引用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:57 25 4
gpt4 key购买 nike

给定一个包含以下表示 *nix 路径的多行字符串的 bash 变量:

/some/app/path/dir1
/some/app/path/somefile1.txt
/some/other/app/path/somefile2.txt
/some/random/app/path/dir2

我希望能够识别所有目录(例如 dir1 和 dir2)并将这些目录路径行替换为它们下面的文件路径。最终输出中不应有目录引用,因此:

#Nodirectory references, just files.
/some/app/path/dir1/dir3/file1.xml
/some/app/path/dir1/dir3/file2.doc
/some/app/path/somefile1.txt
/some/other/app/path/somefile2.txt
/some/random/app/path/dir2/file3.png
/some/random/app/path/dir2/dir4/file4.txt

我不确定如何遍历这些行并删除/替换目录,我该怎么做?

我假设使用“if”和各种运算符来识别目录,并使用“find/my/dir -type f”来实际查找文件。

我使用的是 Mac OSX 10.10 (Yosemite)。

最佳答案

测试名称是否为目录。如果是,调用find,否则直接回显。

echo "$variable" | 
while IFS= read -r name
do
if [[ -d $name ]]
then
find "$name" -type f -print
else
echo "$name"
fi
done

除了管道 echo "$variable",您还可以使用此处字符串:

while IFS= read -r name
do
if [[ -d $name ]]
then
find "$name" -type f -print
else
echo "$name"
fi
done <<<"$variable"

关于linux - 如何在 Bash 中识别多行字符串中的目录路径,替换为对自己文件内容的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31524604/

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