Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bashshell中使用Rename命令重命名文件_Bash_Scripting_Rename_File Rename - Fatal编程技术网

在bashshell中使用Rename命令重命名文件

在bashshell中使用Rename命令重命名文件,bash,scripting,rename,file-rename,Bash,Scripting,Rename,File Rename,我在论坛上读过其他类似的问题,我不明白为什么我尝试的命令不起作用 我有一个以aaaa_100_aaaa.csv、aaaa_100_aaab.csv、aaaa_100_aaac.csv等形式命名的文件列表,我想用“200”替换“100” 我正在Windows PowerShell WSL中运行bash。我试着用这个命令 重命名's/420/410/g'*.csv 我在论坛上的许多答案中都发现了同样的表达,但它不起作用。我收到了错误信息 mv: target 'aaaa_100_aaaa.csv'

我在论坛上读过其他类似的问题,我不明白为什么我尝试的命令不起作用

我有一个以aaaa_100_aaaa.csv、aaaa_100_aaab.csv、aaaa_100_aaac.csv等形式命名的文件列表,我想用“200”替换“100”

我正在Windows PowerShell WSL中运行bash。我试着用这个命令

重命名's/420/410/g'*.csv
我在论坛上的许多答案中都发现了同样的表达,但它不起作用。我收到了错误信息

mv: target 'aaaa_100_aaaa.csv' is not a directory.

鉴于错误消息以
mv:
开头,因此显然是由
mv
(“move”)命令生成的,我敢打赌您的
bash
已配置为将
rename
作为
mv
的替代名称。因此,您根本没有真正运行
rename
命令

要检查此项,请运行
键入rename
。它可能会告诉您,
rename
是一个别名或shell函数,而不是您所期望的对
/usr/bin/rename
可执行文件的引用

您可以通过使用完整路径名来调用
重命名

    /usr/bin/rename 's/100/200/g' *.csv
或者在
rename
前面写一个反斜杠,告诉
bash
跳过对命令名的任何特殊处理:

    \rename 's/100/200/g' *.csv
当然,如果你想经常使用真正的
重命名
,那么记住每次都要这么做会很烦人。您可以
unalias重命名
,但这只能在当前shell中修复它


长期的解决方案是防止bash将
rename
视为一种快捷方式。要做到这一点,首先必须找出别名或函数的定义位置,然后删除该定义。它可能在您的
$HOME/.bashrc
$HOME/.bash\u配置文件中。如果它不在那里,那么像
grep rename$HOME/*
之类的东西应该会找到它。如果找不到它,那么它可能在系统启动文件中,您无法(或不想)编辑,在这种情况下,您可以通过将
unalias rename
添加到
.bashrc
.bash\u profile

来删除它,因为错误消息以
mv:
开头,因此显然是由
mv
(“move”)命令生成的,我敢打赌您的
bash
已配置为将
rename
作为
mv
的替代名称。因此,您根本没有真正运行
rename
命令

要检查此项,请运行
键入rename
。它可能会告诉您,
rename
是一个别名或shell函数,而不是您所期望的对
/usr/bin/rename
可执行文件的引用

您可以通过使用完整路径名来调用
重命名

    /usr/bin/rename 's/100/200/g' *.csv
或者在
rename
前面写一个反斜杠,告诉
bash
跳过对命令名的任何特殊处理:

    \rename 's/100/200/g' *.csv
当然,如果你想经常使用真正的
重命名
,那么记住每次都要这么做会很烦人。您可以
unalias重命名
,但这只能在当前shell中修复它


长期的解决方案是防止bash将
rename
视为一种快捷方式。要做到这一点,首先必须找出别名或函数的定义位置,然后删除该定义。它可能在您的
$HOME/.bashrc
$HOME/.bash\u配置文件中。如果它不在那里,那么像
grep rename$HOME/*
之类的东西应该会找到它。如果没有找到它,那么它可能在系统启动文件中,您无法(或不想)编辑,在这种情况下,您可以通过将
unalias rename
添加到您的
.bashrc
.bash\u profile

来删除它,如果您从
util linux
软件包中有
rename
,不支持
s/find/replace/
。使用
man 1 rename
检查您的
rename
版本。如果在
AVAILABILITY
下,它说它是
util-linux
包的一部分,您就有了答案。如果您从
util-linux
包中有
rename
,则不支持
s/find/replace/
。使用
man 1 rename
检查您的
rename
版本。如果在
AVAILABILITY
下,它说它是
util linux
包的一部分,那么您就有了答案。