Bash 重命名多个子文件夹中的每个文件,从;xxx_xxx.jpg“;至;xxx xxx.jpg“;格式
我是bashshell编程新手,需要这方面的帮助 我有一个目录“production\new\images\sp”,其中包含多个子文件夹,多个文件名的格式为“xxxxx uxxxxx.jpg”。我想将每个子文件夹中的文件名从这种格式重命名为“xxxxx-xxxxx.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 还有其他同名工具可能无法做到这一点,因此请小心。
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