设置当前目录文件名为小写

设置当前目录文件名为小写

Windows

修改当前目录的下的文件夹(不包含下级)的名称为小写,然后在开头加1

php 复制代码
Get-ChildItem -Directory | % { $o=$_.Name; $n="1"+$o.ToLower(); if ($o -ne $n) { try { Rename-Item $_.FullName -NewName $n -ErrorAction Stop } catch { $t="temp_"+[guid]::NewGuid().ToString("N").Substring(0,8); Rename-Item $_.FullName -NewName $t; Rename-Item (Join-Path $_.Parent.FullName $t) -NewName $n } } }

修改当前目录的下的文件夹(不包含下级)的名称为小写,然后在开头减1

php 复制代码
 Get-ChildItem -Directory | % { $o=$_.Name; $n=$o; if ($o.StartsWith("1")) { $n=$o.Substring(1) }; $n=$n.ToLower(); if ($o -ne $n) { try { Rename-Item $_.FullName -NewName $n -ErrorAction Stop } catch { $t="temp_"+[guid]::NewGuid().ToString("N").Substring(0,8); Rename-Item $_.FullName -NewName $t; Rename-Item (Join-Path $_.Parent.FullName $t) -NewName $n } } }

为什么要加减1?

因为在windows环境中,文件夹大小写不敏感

同一目录下的/file和/FilE是 相同 的目录

故直接修改文件夹为小写会导致系统认为已经是小写,不会进行修改。

linux

linux的文件夹区分大小写

同一目录下的/file和/FilE是 不同 的目录

安顺序执行以下三条命令,实现修改为小写文件夹名称

kotlin 复制代码
小写



for dir in */; do dir=${dir%/} lower_dir=$(echo "$dir" | tr '[:upper:]' '[:lower:]') if [[ "$dir" != "$lower_dir" ]]; then if [[ -e "$lower_dir" ]]; then echo "冲突:$lower_dir 已存在,跳过 $dir" else mv -v "$dir" "$lower_dir" fi fi done


处理开头为-的,如-uA



find . -maxdepth 1 -type d ! -name '.' -print0 | while IFS= read -r -d '' dir; do # 获取纯目录名(去除前面的./) dir_name=${dir#./} # 转换为小写 lower_dir=$(echo "$dir_name" | tr '[:upper:]' '[:lower:]') # 如果名称有变化 if [[ "$dir_name" != "$lower_dir" ]]; then # 检查目标是否存在 if [[ -e "$lower_dir" ]]; then printf "冲突:'%s' 已存在,跳过 '%s'\n" "$lower_dir" "$dir_name" else mv -v -- "$dir_name" "$lower_dir" fi fi done

处理-ee类似命令的文件夹名

bash 复制代码
for dir in */; do dir=${dir%/} lower_dir=$(echo "$dir" | tr '[:upper:]' '[:lower:]') if [[ "$dir" != "$lower_dir" ]]; then if [[ -e "$lower_dir" ]]; then echo "冲突:$lower_dir 已存在,跳过 $dir" else mv -v "./$dir" "./$lower_dir" # 添加 ./ 前缀 fi fi done

后记

是因为windows项目创建的文件。后面移动到linux系统上。

发现部分文件访问不了。

原因是windows服务器的文件夹保存逻辑为文件名的前3位,作为文件夹名称,保存到文件夹中。如:acbd.jpg保存到acb/abcd.jpg

之前的保存逻辑导致大小写不同的保存在了一起。如Acbd.jpg保存时,发现已经有acb文件夹,于是保存为acb/Acbd.jpg

于是我现在想要获取Acbd.jpg时,我找的路径是Acb/Acbd.jpg,在linux系统中是找不到的。

于是将文件名改为全小写,并且设置了读取时路径为全小写。

相关推荐
赵民勇6 小时前
Linux/Unix中install命令全面用法解析
linux·shell
苏宸啊7 小时前
Linux指令篇(一)
linux·运维·服务器
我要升天!8 小时前
Linux中《网络基础》
linux·运维·网络
鸽芷咕9 小时前
【2025年度总结】时光知味,三载同行:落笔皆是沉淀,前行自有光芒
linux·c++·人工智能·2025年度总结
羑悻的小杀马特9 小时前
指尖敲代码,笔尖写成长:2025年度总结与那些没说出口的碎碎念
linux·c++·博客之星·2025年度总结
晴天¥10 小时前
VMware+Oracle linux LVM/非LVM磁盘扩容
linux·运维·服务器
oMcLin10 小时前
如何在Oracle Linux 8.4上搭建并优化Kafka集群,确保高吞吐量的实时数据流处理与消息传递?
linux·oracle·kafka
worilb10 小时前
journalctl 与 tail 使用对比
linux
UIUI11 小时前
list_for_each_entry
linux·数据结构·链表
LeenixP11 小时前
RK3576-Debian12删除userdata分区
linux·运维·服务器·数据库·debian·开发板