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

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

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系统中是找不到的。

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

相关推荐
馨谙1 天前
SELinux 故障排除完全指南:从拒绝访问到快速修复
linux
凤凰战士芭比Q1 天前
LNMP环境部署 KodBox私有云盘
linux·架构
南棱笑笑生1 天前
20251106给荣品RD-RK3588-MID开发板跑Rockchip的原厂Android13系统时禁止锁屏+永不休眠
linux·运维·服务器·rockchip
赖small强1 天前
Linux 优先级反转问题详解与处理方案
linux·优先级反转·优先级继承·缩短临界区
wdfk_prog1 天前
[Linux]学习笔记系列 -- [kernel][time]timekeeping
linux·笔记·学习
yuanManGan1 天前
走进Linux的世界:冯诺依曼体系结构
linux
小白银子1 天前
零基础从头教学Linux(Day 60)
linux·数据库·mysql·oracle
new_daimond1 天前
Linux 服务器内存监控与优化指南
linux·服务器·chrome
一介草民丶1 天前
Linux | Mongodb 6 离线安装
linux·运维·mongodb
赖small强1 天前
Linux 线程相关结构对照表与关系图
linux·thread_info·task_struct·thread_struct