Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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
Linux 从大写文件和目录创建具有小写名称的符号链接_Linux_Bash_Sh - Fatal编程技术网

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($_)=}'  ::: *