gpt4 book ai didi

linux - 对目录中的文件进行排序,然后打印内容

转载 作者:太空宇宙 更新时间:2023-11-04 05:55:52 25 4
gpt4 key购买 nike

我需要编写一个脚本来按名称中第一个“0”后面的字符对文件名进行排序。所有文件名至少包含一个0。然后脚本应按该顺序打印每个文件的内容。

我知道我需要使用排序和猫。但我无法弄清楚是什么类型。这是我目前所掌握的。

<小时/>
#!/bin/bash

dir=$(pwd)


for n in $dir `ls | sort -u ` ; do

cat $n
done;

最佳答案

假设

  1. 第一个零可以是文件名中的任何位置,
  2. 零后可能有多个同名文件,
  3. 您希望能够处理任何文件名,包括点文件和包含换行符的名称,并且
  4. 您已安装 GNU CoreUtils(常见发行版的标准配置),

你需要做一些像这样疯狂的事情(未经测试):

find . -mindepth 1 -maxdepth 1 -exec printf '%s\0' {} + | while IFS= read -r -d ''
do
printf '%s\0' "${REPLY#*0}"
done | sort --unique --zero-terminated | while IFS= read -r -d ''
do
for file in ./*"$REPLY"
do
[…]
done
done

说明:

  1. 打印所有以 NUL 分隔的文件名并将其读回,以便能够对它们进行变量替换。
  2. 删除文件名中直到第一个零(包括第一个零)的所有内容并打印出来。
  3. 按文件名的其余部分排序,确保每个唯一后缀仅打印一次。
  4. 处理以(现已排序)后缀结尾的每个文件。

关于linux - 对目录中的文件进行排序,然后打印内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52240555/

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