如何选择带有连续数字后缀的文件名?

如何选择带有连续数字后缀的文件名?

我喜欢保存东西,所以我想保存.bash_history

我想使用脚本将其复制到目录中。像这儿

#!/bin/bash
#Something here? number=~/Desktop/Coding/Bash\ Histories/bash_history "?"
cp ~/.bash_history ~/Desktop/Coding/Bash\ Histories/bash_history #$number "?"

但我已经有一个名为bash_historybash_history 2等的文件bash_history 3

我希望它检查最大的数字,在本例中为 5。如果bash_history 5存在,那么我希望它命名它bash_history 6

如果是的话,bash_history 11111我希望它能够命名bash_history 11112

我不确定我应该在这里使用哪个命令,if结合使用grep什么命令?

答案1

您可以使用 lssorttail来完成此操作cut

首先重命名bash_history为,bash_history 1以便所有文件都有一个编号。然后运行以下命令复制下一个文件:

#!/bin/bash

D=~/Desktop/Coding/Bash\ Histories

num=$(ls "$D" | cut -d ' ' -f 2 | sort -nr | head -1)
num=$(( num + 1 ))
cp ~/.bash_history "$D/bash_history $num"

ls $D列出“存储”目录中的文件。从每个名称(例如bash_history 16,不包括路径)中,cut -d ' ' -f 2拆分' '并获取第二个字段(数字16)。以这种方式找到的数字将按-r数字 () 逆序 ( -n) 排序,因为字符串10会排在 之前2。从该列表中(记住它是相反的),您取第一个,即最大的数字。
您增加该数字并将其用于下一个文件。

我更愿意首先确定一个数量级(例如 5 位数字),然后使用printf %05d $num自己获取前导零(这使文件按字母顺序排列与数字的顺序相同(至少直到达到 100000 为止))

相关内容