将文件重命名为数字,从特定数字开始

时间:2017-10-03 18:12:25

标签: linux bash shell command-line

我想将目录中的所有文件重命名为序列号:

1.txt
2.txt
3.txt

依旧......

以下是我目前正在使用的代码:

ls | cat -n | while read n f; do mv "$f" "$n.txt"; done 

代码确实有效,但我需要从特定的数字开始。例如,我可能想要使用数字49而不是数字1

有没有办法在终端(在Mac上)执行此操作?

1 个答案:

答案 0 :(得分:3)

可以使用类似nl with the -v option的内容来设置1以外的起始行号,但您可以使用Bash功能:

i=1
for f in *; do
    [[ -f $f ]] && mv "$f" $((i++)).txt
done

其中i设置为您想要的初始值。

这也避免了解析ls的输出*。相反,我使用glob(-f)和测试(Deprecation Notice in ./../php/php-gettext/streams.php#48 Methods with the same name as their class will not be constructors in a future version of PHP; StringReader has a deprecated constructor Backtrace ./../php/php-gettext/gettext.inc#41: require() ./libraries/select_lang.lib.php#477: require_once(./../php/php-gettext/gettext.inc) ./libraries/common.inc.php#569: require(./libraries/select_lang.lib.php) ./index.php#12: require_once(./libraries/common.inc.php) )来确保我实际上是在操纵文件而不是目录。