Bash 如何重命名终端上的所有目录

Bash 如何重命名终端上的所有目录,bash,Bash,我一共有31个目录。每个目录都有一个随机名称 ❯ ls -al total 32 drwxr-xr-x 34 shinokada staff 1088 Dec 28 17:16 . drwxr-xr-x 32 shinokada staff 1024 Dec 28 17:12 .. -rw-r--r--@ 1 shinokada staff 14340 Dec 28 17:16 .DS_Store drwxr-xr-x 5 shinokada staff 160

我一共有31个目录。每个目录都有一个随机名称

❯ ls -al
total 32
drwxr-xr-x  34 shinokada  staff   1088 Dec 28 17:16 .
drwxr-xr-x  32 shinokada  staff   1024 Dec 28 17:12 ..
-rw-r--r--@  1 shinokada  staff  14340 Dec 28 17:16 .DS_Store
drwxr-xr-x   5 shinokada  staff    160 Dec 28 17:10 05618066
drwxr-xr-x   5 shinokada  staff    160 Dec 28 17:08 0fef2d20
drwxr-xr-x   5 shinokada  staff    160 Dec 28 17:09 11ff096d
drwxr-xr-x   5 shinokada  staff    160 Dec 28 17:09 1651ff1f
drwxr-xr-x   5 shinokada  staff    160 Dec 28 17:09 2123b256
... and more 
现在我想把它们重命名为sample1 sample2 sample3…sample31

如何在终端(bash/zsh)上执行此操作

有没有一种快速的方法,而不是一个接一个地重命名

num=1; for dir in */ ; do mv "${dir}" "sample$num" ; ((num++)); done
我假设您不想重命名文件,只想重命名当前工作目录中的目录。

这应该可以:

num=1; for dir in */ ; do mv "${dir}" "sample$num" ; ((num++)); done

我假设您不想重命名文件,只想重命名当前工作目录中的目录。

您不能同时运行Bash和Zsh。每个人的答案可能会有所不同。MacOS似乎没有提供
rename
工具;有几个不兼容的,所以不清楚您指的是哪一个,但是如果您有基于Perl的,它可能会以一行程序的形式完成您的要求。您不能同时运行Bash和Zsh。每个人的答案可能会有所不同。MacOS似乎没有提供
rename
工具;有几个不兼容的,所以不清楚您指的是哪一个,但是如果您有基于Perl的,它可能可以用一行漂亮的语句来完成您的要求。我只需要将num=0更改为num=1。谢谢。对不起,我错过了您从
sample1
开始的信息。谢谢你指出这一点(我在答案中对其进行了编辑)。我只需要将num=0更改为num=1。谢谢。对不起,我错过了您从
sample1
开始的信息。谢谢你指出(我在答案中编辑了它)。