我需要详细说明一下。这些命令实际上是针对 BBS FTN 投掷者的。这些命令所在的配置文件只允许特定的声明。这里有一些例子:
exec "/home/imp/imp/poll.sh" *.su? *.mo? *.tu? *.we? *th? *.fr? *.sa? *.pkt
flag toss!.now [0-9a-Z][0-9a-Z][0-9a-Z][0-9a-Z][0-9a-Z][0-9a-Z][0-9a-Z][0-9a-Z].???
exec "/home/imp/imp/poll.sh /home/imp/hpt/secure" /home/imp/hpt/secure/*.[STFWMstfWM][ouaherOUAHER][0-9A-ZA-a] *.[pP][kK][tT]
这就是为什么我想使用该语法([0-9a-z](例如))。问题是邮件程序正在寻找小写文件名,但只存在大写文件名。
我正在尝试使用以下语法将文件从大写转换为小写:
mv /home/imp/hpt/outbound/[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z].[STFWMfWM][OUAHER][0-9] /home/imp/hpt/outbound/[0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z].[stfwm][ouaher][0-9a-za-a]
我认为我的语法不正确。
这是我要重命名的文件名的示例:
0000FE70.FR0
非常感谢任何和所有的帮助。谢谢。
答案1
每当您想要将一类字符更改为另一类字符时,请使用tr
.
for f in *; do
test -f "$f" && echo mv "$f" "$( tr '[:upper:]' '[:lower:]' <<<"$f" )"
done
该脚本会将当前目录中的所有文件重命名为全部小写字母。它将跳过目录。echo
当您确定它能满足您的要求时,请将其删除。如果您只有标准 ASCII 文件名(注意:,而不是),则可以分别将[:upper:]
和替换[:lower:]
为 和A-Z
。a-z
A-Z
[A-Z]
或者,使用 Bash 内置的从大写到小写的变量替换:
for f in *; do
test -f "$f" && echo mv "$f" "${f,,}"
done
答案2
这个答案来自 Stack Overflow 的 Alex B 将帮助您重命名目录下的文件和子文件夹。
它包括使用find
Linuxrename
命令。我只想补充一点,上面链接中提供的命令也会修改目录名称。如果您只想更改文件名,则需要更改-depth
下一个选项:-type f
。
该命令的另一个正则表达式rename
可能是下面的,我认为它更容易理解。
find my_root_dir -type f -execdir rename 'y/A-Z/a-z/' {} \;
rename
请注意,命令正则表达式和大括号之间有一个必要的空格,并且它们和命令终止字符之间也有一个空格\;
另请记住,它不仅会重命名您执行命令的目录(目录my_root_dir
)中的每个文件,还会重命名该目录中包含的每个子文件夹下的所有文件。您可以使用-maxdepth 0
该命令的选项find
来强制它仅将测试和操作应用于起点本身。
答案3
和zsh
:
autoload zmv # best in ~/.zshrc
zmv '[[:alnum:]](#c8).[STFWMfWM][OUAHER][0-9]' '${(L)f}'
这需要检查潜在的冲突。
答案4
rename-lower
当前目录的简单脚本,如果rename
命令不起作用,您可以在 mv 中更改。
#/bin/bash
# script to replace all upper case to lower case
for i in *
do
d=$(echo ${i} |tr [:upper:] [:lower:]);
if [ ${d} != ${i} ]
then
echo "renaming:" ${i} ${d}
rename ${i} ${d} ${i}
# mv ${i} ${d}
fi
done
例子
$ ls
tmp.EwcM2s6kfU tmp.kcUX6rtjiu tmp.kzpqLvWcnQ tmp.N1H8bLt1at
$ rename-lower
renaming: tmp.EwcM2s6kfU tmp.ewcm2s6kfu
renaming: tmp.kcUX6rtjiu tmp.kcux6rtjiu
renaming: tmp.kzpqLvWcnQ tmp.kzpqlvwcnq
renaming: tmp.N1H8bLt1at tmp.n1h8blt1at