gpt4 book ai didi

Bash 查找同名目录之前的文件的排序顺序

转载 作者:行者123 更新时间:2023-12-02 09:05:04 25 4
gpt4 key购买 nike

情况

假设我们有一个如下所示的目录:

.
├── 1
│   ├── 1_1.md
│   └── 1_2.md
├── 1.md
├── 2
│   ├── 2_1.md
│   └── 2_2.md
└── 2.md

这可以通过以下方式重新创建:

mkdir example
cd example
echo "# Chapter 1" >> 1.md
mkdir 1
cd 1
echo "## Section 1.1" >> 1_1.md
echo "## Section 1.2" >> 1_2.md
cd ..
echo "# Chapter 2" >> 2.md
mkdir 2
cd 2
echo "## Section 2.1" >> 2_1.md
echo "## Section 2.2" >> 2_2.md

现在我想按以下顺序将所有 .md 文件连接成一个 .md 文件:

- 1.md 
- 1_1.md
- 1_2.md
- 2.md
- 2_1.md
- 2_2.md

尝试

不幸的是,

$ cat `find -type f | sort`

给我

## Section 1.1
## Section 1.2
# Chapter 1
## Section 2.1
## Section 2.2
# Chapter 2

章节与章节的顺序混合为

$ find -type f | sort

给我

./1/1_1.md
./1/1_2.md
./1.md
./2/2_1.md
./2/2_2.md
./2.md

问题

如何强制将章节置于相应部分之上?

最佳答案

如果您的sort命令支持-V选项...

-V, --version-sort
natural sort of (version) numbers within text

...我们可以使用它来根据需要对文件名进行排序:

$ find -type f | sort -V
./1.md
./1/1_1.md
./1/1_2.md
./2.md
./2/2_1.md
./2/2_2.md

现在将结果通过管道传输到 xargs/cat 以按所需顺序显示字符串:

$ find -type f | sort -V | xargs -r cat
# Chapter 1
## Section 1.1
## Section 1.2
# Chapter 2
## Section 2.1
## Section 2.2

关于Bash 查找同名目录之前的文件的排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59544503/

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