Bash 重命名多个子文件夹中的每个文件,从;xxx_xxx.jpg“;至;xxx xxx.jpg“;格式

Bash 重命名多个子文件夹中的每个文件,从;xxx_xxx.jpg“;至;xxx xxx.jpg“;格式,bash,Bash,我是bashshell编程新手,需要这方面的帮助 我有一个目录“production\new\images\sp”,其中包含多个子文件夹,多个文件名的格式为“xxxxx uxxxxx.jpg”。我想将每个子文件夹中的文件名从这种格式重命名为“xxxxx-xxxxx.jpg”格式 例如: 86193730_43134.jpg =====> 86193730-43134.jpg 试试这个: rename 's/_/-/' *_*.jpg 还有其他同名工具可能无法做到这一点,因此请小心。

我是bashshell编程新手,需要这方面的帮助

我有一个目录“production\new\images\sp”,其中包含多个子文件夹,多个文件名的格式为“xxxxx uxxxxx.jpg”。我想将每个子文件夹中的文件名从这种格式重命名为“xxxxx-xxxxx.jpg”格式

例如:

86193730_43134.jpg =====> 86193730-43134.jpg
试试这个:

rename 's/_/-/' *_*.jpg
还有其他同名工具可能无法做到这一点,因此请小心。

如果运行以下命令(
linux

你得到的结果是

.../rename: Perl script, ASCII text executable
那么这似乎是正确的工具=)

如果不是,将其作为
Debian
和类似
Ubuntu
的衍生工具的默认值(通常已经是这种情况):

$ sudo update-alternatives --set rename /path/to/rename
(将
/path/to/rename
替换为
perl的rename
命令的路径


最后但并非最不重要的一点是,这个工具最初是由Perl的父亲Larry Wall编写的。

试试这个:

rename 's/_/-/' *_*.jpg
还有其他同名工具可能无法做到这一点,因此请小心。

如果运行以下命令(
linux

你得到的结果是

.../rename: Perl script, ASCII text executable
那么这似乎是正确的工具=)

如果不是,将其作为
Debian
和类似
Ubuntu
的衍生工具的默认值(通常已经是这种情况):

$ sudo update-alternatives --set rename /path/to/rename
(将
/path/to/rename
替换为
perl的rename
命令的路径


最后但并非最不重要的一点是,这个工具最初是由Perl的父亲Larry Wall编写的。

试试这个:

rename 's/_/-/' *_*.jpg
还有其他同名工具可能无法做到这一点,因此请小心。

如果运行以下命令(
linux

你得到的结果是

.../rename: Perl script, ASCII text executable
那么这似乎是正确的工具=)

如果不是,将其作为
Debian
和类似
Ubuntu
的衍生工具的默认值(通常已经是这种情况):

$ sudo update-alternatives --set rename /path/to/rename
(将
/path/to/rename
替换为
perl的rename
命令的路径


最后但并非最不重要的一点是,这个工具最初是由Perl的父亲Larry Wall编写的。

试试这个:

rename 's/_/-/' *_*.jpg
还有其他同名工具可能无法做到这一点,因此请小心。

如果运行以下命令(
linux

你得到的结果是

.../rename: Perl script, ASCII text executable
那么这似乎是正确的工具=)

如果不是,将其作为
Debian
和类似
Ubuntu
的衍生工具的默认值(通常已经是这种情况):

$ sudo update-alternatives --set rename /path/to/rename
(将
/path/to/rename
替换为
perl的rename
命令的路径


最后但并非最不重要的一点是,这个工具最初是由Perl的父亲Larry Wall编写的。

这对我很有用(通过@sputnik改进):

这对我有用(通过@sputnik改进):

这对我有用(通过@sputnik改进):

这对我有用(通过@sputnik改进):


如果重命名不可用(如在OSX上):


find.-type f-name“*.jpg”-execdir bash-c'f=“{}”;nf=$(tr“904;”-”,以防重命名不可用(如在OSX上):


find.-type f-name“*.jpg”-execdir bash-c'f=“{}”;nf=$(tr“904;”-”,以防重命名不可用(如在OSX上):


find.-type f-name“*.jpg”-execdir bash-c'f=“{}”;nf=$(tr“904;”-”,以防重命名不可用(如在OSX上):



find.-type f-name“*.jpg”-execdir bash-c'f=“{}”;nf=$(tr“173-”
find
tr
mv
。你用这三个词试过什么吗?请看或
find
tr
mv
。你用这三个词试过什么吗?请看或
find
tr
mv
。您是否尝试过使用这3个工具?请参见或实际上,
s//-/
:)编辑:aaa,修复您可以使用
重命名
或(在Debian衍生工具上)
rename.ul-
,这样你就不会排除所有非Debian发行版。如何将其用于多个子文件夹中的多个文件?如\test\subfolder1;\test\subfolder2;test\subfolder3等…如果你想让它是递归的,请使用和
shopt-s globstar;重命名为's/x/x/'***.\u*.jpg
。或者只需
rename's//'*//'*./*.\jpg实际上,
s//-/
:)编辑:aaa,修复您可以使用
rename
或(在Debian衍生品上)
rename.ul-
,这样你就不会排除所有非Debian发行版。如何将其用于多个子文件夹中的多个文件?如\test\subfolder1;\test\subfolder2;test\subfolder3等…如果你想让它是递归的,请使用和
shopt-s globstar;重命名为's/x/x/'***.\u*.jpg
。或者只需
rename's//'*//'*./*.\jpg实际上,
s//-/
:)编辑:aaa,修复您可以使用
rename
或(在Debian衍生品上)
rename.ul-
,这样你就不会排除所有非Debian发行版。如何将其用于多个子文件夹中的多个文件?如\test\subfolder1;\test\subfolder2;test\subfolder3等…如果你想让它是递归的,请使用和
shopt-s globstar;重命名为's/x/x/'***.\u*.jpg
。或者只需
rename's//'*//'*./*.\jpg实际上,
s//-/
:)编辑:aaa,修复您可以使用
rename
或(在Debian衍生品上)
rename.ul-
,这样你就不会排除所有非Debian发行版。如何将其用于多个子文件夹中的多个文件?如\test\subfolder1;\test\subfolder2;test\subfolder3等…如果你想让它是递归的,请使用和
shopt-s globstar;重命名为's/x/x/'***.\u*.jpg
。或者只需
rename's//'*//'*./*.\jpg-1不要这样做。永远不要解析
ls
输出,直接使用globs:
表示*jpg
Adde中的f