我需要一些Shell脚本的帮助。我有一个文件夹,文件夹名都是单字母的,以1开头,以小写字母z结尾:[1-9A-Za-z]
。现在,我想将文件夹重命名为十六进制值:1
到31
. z
到7A
。
我想用for循环来修复这个问题,但现在我被困在这里了。我从来没有用Shell编程,而是用C和ASM。
[编辑]:打开Terminfo文件夹。在OS X(10.9.1)上:/usr/share/terminfo
。在这里你可以看到十六进制值。现在,在我的iPhone上,它们是单个ASCII字符。因此终端找不到任何文件。
2条答案
按热度按时间6yoyoihd1#
要将具有单字符名称的目录重命名为该名称的十六进制值,请执行以下操作:
上面的代码是基于使用bash将ascurry转换为hex的代码。因此,该脚本将作为其第一个参数的字符转换为其十六进制的ascurred值:
因此,例如,如果您将该脚本放在名为char2hex.sh的可执行文件中:
**更多:**以下信息是针对这个问题的第一个版本,它要求十进制值:
此脚本将作为第一个参数给出的字符转换为它的ascurrentdecimal值:
因此,例如,如果您将该脚本放在名为char2hex.sh的可执行文件中:
k4ymrczo2#
在任何适当的目录中,您可以尝试:
如果您使用
echo mv
而不仅仅是mv
,您可以看到shell执行的操作。您可以使用%2x
代替%2X
来获得像7a
这样的名称,它与我在机器上的/usr/share/terminfo
中看到的名称相匹配(但是文件系统是大小写保留的,不区分大小写,所以大写应该可以工作)。您也可以考虑使用ln -s
而不是mv
;这样,您就可以同时使用旧名称和新名称,因此旧代码和新代码应该是一致的。在Mac OS X 10.9.1 Mavericks上测试。