Linux 从大写文件和目录创建具有小写名称的符号链接
我有一个目录,其中包含名称包含大写字母的文件和文件夹。 我想知道是否可以使用Linux 从大写文件和目录创建具有小写名称的符号链接,linux,bash,sh,Linux,Bash,Sh,我有一个目录,其中包含名称包含大写字母的文件和文件夹。 我想知道是否可以使用bash创建具有相同名称但小写的符号链接 -rw-r--r-- 1 root root 570 Sep 22 00:00 AiA_SA_2014_08_10 -rw-r--r-- 1 root root 575 Sep 12 00:00 AiA_SA_Lite_2014_09_07 -rw-r--r-- 1 root root 570 Sep 22 00:00 AiA_SA_2014_
bash
创建具有相同名称但小写的符号链接
-rw-r--r-- 1 root root 570 Sep 22 00:00 AiA_SA_2014_08_10
-rw-r--r-- 1 root root 575 Sep 12 00:00 AiA_SA_Lite_2014_09_07
-rw-r--r-- 1 root root 570 Sep 22 00:00 AiA_SA_2014_08_10
到
是的,有可能
使用简单循环:
for i in *; do
[[ -f $i ]] || continue # in case of empty directory
lcname=${i,,} # Covert the name to lowercase
ln -s "$i" "$lcname"
done
如果您不是从当前目录运行,则可以在
中为循环提供完整路径。在最近的bash中,您可以使用,
参数展开将字符串转换为小写:
shopt -s extglob
for file in *?([:upper:])* ; do
ln -s "$file" "${file,,}"
done
extglob模式仅选择名称中包含大写字母的文件
declare -l lower
for upper in *; do lower="$upper"; ln -s "$upper" "$lower"; done
declare -l lower
for upper in *; do lower="$upper"; ln -s "$upper" "$lower"; done
parallel ln -s {} '{=$_=lc($_)=}' ::: *