我正在尝试撤销通过 所做的更改rename
。
我正在重命名子文件夹中的文件,然后不假思索地尝试..
使用以下命令清除名称:
rename "s/.././" *
现在我有一个包含 600 个文件的文件夹,每个文件名的前两个字母更改为.zzyGir*
有什么方法可以将“。”改回每个文件名的首字母而不丢失整个文件?
我尝试过不同的方法但都没有成功,例如:
rename "s/./Di/; *
我也愿意接受一次一个文件的解决方案,主要是为了避免丢失文件。
答案1
前两个字母已成为历史。没有机会找回它们。但你可以重命名文件以删除开头部分,.
具体步骤如下
确保bash
在终端中有
bash
进入带有错误文件名的文件夹
shopt -s dotglob
rename -n 's/^\./Di/' *
如果一切顺利
rename 's/^\./Di/' *
完成
shopt -u dotglob
解释
rename -n "s/^\./Di/" *
-n
无操作:打印要重命名的文件的名称,但不重命名。
/^\./
^
断言字符串开头的位置\.
与字符.
逐字匹配
shopt -s dotglob
&shopt -u dotglob
shopt
shopt [-pqsu] [-o] [optname …]
切换控制可选 shell 行为的设置值。
-s
启用(设置)每个 optname。
-u
禁用(取消设置)每个 optname。
dotglob
.
如果设置了,Bash 会在文件名扩展的结果中包含以 a 开头的文件名。
例子
$ ls -oag
total 88
drwxrwxr-x 2 4096 Jul 17 17:16 .
drwxr-xr-x 226 86016 Jul 17 17:13 ..
-rw-rw-r-- 1 0 Jul 17 17:16 .foo
$ rename "s/^\./Di/" *
$ ls -oag
total 88
drwxrwxr-x 2 4096 Jul 17 17:16 .
drwxr-xr-x 226 86016 Jul 17 17:13 ..
-rw-rw-r-- 1 0 Jul 17 17:16 Difoo
我不确定你的意思
有什么方法可以将“。”改回每个文件名的首字母
你是指这样的吗?
.zzyGir
->zzzzGir
如果是,则在 bash 中使用以下命令:
shopt -s dotglob
rename -n 's/^\.(..)(.*)/$1$1$2/' *
检查结果并重命名
rename 's/^\.(..)(.*)/$1$1$2/' *
最后
shopt -s dotglob
答案2
据我了解,您有一个包含如下文件的文件夹:
ls -la
drwxrwxr-x 2 ron ron 4096 Jul 17 20:50 .
drwxrwxr-x 3 ron ron 4096 Jul 17 20:47 ..
-rw-rw-r-- 1 ron ron 0 Jul 17 20:47 .abc
-rw-rw-r-- 1 ron ron 0 Jul 17 20:47 .Gyr
-rw-rw-r-- 1 ron ron 0 Jul 17 20:47 .hig123
-rw-rw-r-- 1 ron ron 0 Jul 17 20:47 .zyz
并且您想要.
从所有文件名中删除它以使其:
abc
Gyr
hig123
zyz
为此,您可以使用find
和rename
:
find . ! -path . -type f -name ".*" -exec rename -n "s/.\/.//" {} \;
上述命令(即使用-n
)是一次试运行:
find . ! -path . -type f -name ".*" -exec rename -n "s/.\/.//" {} \;
rename(./.zyz, zyz)
rename(./.abc, abc)
rename(./.Gyr, Gyr)
rename(./.hig123, hig123)
运行它而不-n
实际更改文件名:
find . ! -path . -type f -name ".*" -exec rename "s/.\/.//" {} \;
ls -la
total 8
drwxrwxr-x 2 ron ron 4096 Jul 17 20:59 .
drwxrwxr-x 3 ron ron 4096 Jul 17 20:47 ..
-rw-rw-r-- 1 ron ron 0 Jul 17 20:47 abc
-rw-rw-r-- 1 ron ron 0 Jul 17 20:47 Gyr
-rw-rw-r-- 1 ron ron 0 Jul 17 20:47 hig123
-rw-rw-r-- 1 ron ron 0 Jul 17 20:47 zyz