写一个shell脚本找到当前路径下的所有.png文件名改成与存放其的父级目录一致
时间: 2024-11-30 07:15:48 浏览: 6
你可以创建一个简单的Shell脚本来完成这个任务。这里有一个基础示例,它会遍历当前目录及其子目录,查找所有的`.png`文件,并将它们的名称修改为其所在父目录的名字加上原始文件名。假设我们已经在一个目录结构中,比如:
```
/path/to/current/directory/
image1.png
subdirectory/
image2.png
```
你可以使用以下bash脚本:
```bash
#!/bin/bash
# 定义当前工作目录
current_dir=$(pwd)
# 遍历当前目录和子目录
for file in "$current_dir"/*/*.png; do
# 获取文件完整路径和父目录名字
full_path=$file
parent_dir=$(dirname "$full_path" | awk -F"/" '{print $1}')
# 如果文件不在顶级目录,更改文件名
if [ "${parent_dir}" != "." ]; then
new_name="${parent_dir}/${basename($file)}"
mv "$full_path" "$new_name"
fi
done
相关问题
写一个部署在linux服务器上的shell脚本,要求能够通过命令行调起 入参有两个:一个yyyymmdd格式的日期,命名为$reportDate,一个文件名reportName,命名为$reportName 用/remote_dir/salesreport_weixin/ 和 $reportDate进行拼接,形成文件路径 命名为$filePath 用$reportName + $reportDate + .png后缀 构成文件名,命名为$fileName 再将$filePath 和 $fileName 拼接形成完整的文件路径 $completePath 再调用名为SendWeChatFileByPath的websrvice, post三个参数,分别为 "ACRM", "营销数据微信推送测试群", $completePath
以下是一个可能的实现,假设SendWeChatFileByPath的websrvice已经存在并且可以通过curl命令调用。
```bash
#!/bin/bash
# 获取命令行参数
reportDate=$1
reportName=$2
# 拼接文件路径和文件名
filePath="/remote_dir/salesreport_weixin/${reportDate}"
fileName="${reportName}${reportDate}.png"
completePath="${filePath}/${fileName}"
# 调用websrvice
curl -X POST -F "arg1=ACRM" -F "arg2=营销数据微信推送测试群" -F "arg3=@${completePath}" http://example.com/SendWeChatFileByPath
```
使用方法:在linux服务器上创建一个名为`send_report.sh`的文件,将上述代码拷贝进去,然后给它赋予执行权限。以后就可以使用命令行调用它,例如:
```bash
./send_report.sh 20220101 sales_report
```
这样就会发送文件`/remote_dir/salesreport_weixin/20220101/sales_report20220101.png`到指定的微信群。
写一个shell脚本将/home/leeqianxi/lqx/code/Mask_RCNN/data/cropped_labels/crop_*_json/label.png替换为crop_*.json
你可以创建一个简单的bash shell脚本来实现这个替换操作。下面是一个示例脚本:
```bash
#!/bin/bash
# 定义源文件夹路径和目标文件夹路径
src_dir="/home/leeqianxi/lqx/code/Mask_RCNN/data/cropped_labels"
target_dir="${src_dir}/crop_*.json"
# 遍历目标文件夹中的所有.json文件
for json_file in "$target_dir"/*.json
do
# 获取.json文件名,去掉.json扩展名
base_name=$(basename "$json_file" .json)
# 计算对应的图片文件路径,替换为.label.png
img_path="$src_dir/${base_name}.png"
# 检查图片文件是否存在,如果存在则进行替换
if [ -f "$img_path" ]; then
mv "$img_path" "${json_file%.*}_label.png" # 将.png替换为_label.png
echo "已替换:$img_path -> ${json_file%.*}_label.png"
else
echo "警告:图片文件不存在:$img_path"
fi
done
# 如果在脚本运行过程中没有错误,显示完成信息
echo "所有替换操作已完成."
```
保存此脚本到一个名为`replace_images.sh`的文件,然后通过`chmod +x replace_images.sh`使其可执行,最后通过`./replace_images.sh`运行它。
阅读全文