linux文件下载分类

在这里插入图片描述
在下载图片时各个网站命名不统一,管理起来很麻烦,想要写一个脚本将下载的图片或者其他资源实现格式统一,方便管理

$0:表示脚本路径。运行 ./myscript.sh,$0 将会保存 ./myscript.sh。
$1:表示传递给脚本的第一个参数。命令是 ./myscript.sh arg1 arg2,那么 $1 将会是 arg1,$2 将会是 arg2。
$@:表示所有的参数,适合需要遍历所有传递给脚本的参数的场景。
$#:表示传递给脚本的参数个数。
$? 是一个特殊变量,用于获取上一个执行命令的退出状态码。这个状态码可以用来判断命令是否成功执行。0 表示命令成功执行。非 0 值表示命令发生了错误

脚本: 将文件命名为现在时间+原后缀

#!/bin/bash
# 检查是否提供了文件名作为参数
if [ "$#" -ne 1 ]; thenecho "need: $0 [filename]"exit 1
fi
# 读取文件名参数
filename=$1
# 检查文件是否存在
if [ ! -f "$filename" ]; thenecho "Error: File '$filename' does not exist."exit 1
fi
# 获取文件后缀
extension="${filename##*.}"
# 获取当前时间并格式化
timestamp=$(date +%Y%m%d_%H%M%S)
# 构造新的文件名
newfilename="${timestamp}.${extension}"
# 重命名文件
mv "$filename" "$newfilename"
# 检查是否重命名成功
if [ $? -eq 0 ]; thenecho "File renamed to '$newfilename'"
elseecho "Error: Failed to rename file."exit 1
fi

与wget结合,接收资源链接,下载文件并重命名。
将重命名后的文件放入对应名称的文件夹

#!/bin/bash
# 检查是否提供了下载链接作为参数
if [ "$#" -ne 1 ]; thenecho "Usage: $0 <download_url>"exit 1
fi
# 读取下载链接参数
download_url=$1
# 使用wget下载文件
wget "$download_url" -O downloaded_file
# 检查下载是否成功
if [ $? -ne 0 ]; thenecho "Error: Download failed."exit 1
fi
# 获取文件后缀(去除.)
extension="${download_url##*.}"
# 获取当前时间并格式化
timestamp=$(date +%Y%m%d_%H%M%S)
# 构造新的文件名
new_file_name="${timestamp}.${extension}"
# 重命名文件
mv "downloaded_file" "$new_file_name"
# 检查是否重命名成功
if [ $? -eq 0 ]; thenecho "File downloaded and renamed to '$new_file_name'"
elseecho "Error: Failed to rename the downloaded file."exit 1
fi
# 根据后缀找到或创建文件夹
folder_name="${extension}"
if [ -d "$folder_name" ]; then# 文件夹存在,将文件移动到文件夹中mv "$new_file_name" "$folder_name/"
else# 文件夹不存在,创建文件夹并将文件移动到文件夹中mkdir "$folder_name"mv "$new_file_name" "$folder_name/"
fi
# 检查文件是否成功移动到文件夹中
if [ $? -eq 0 ]; thenecho "File moved to folder '$folder_name'"
elseecho "Error: Failed to move the file to the folder '$folder_name'"exit 1
fi

在这里插入图片描述
如果使用mv命令往文件夹内放相同名字文件后者会把前者覆盖掉,这意味着同一秒下载的多个文件只会留下一个?

  • 把时间精度设到毫秒级,大大降低重复可能,
  • 在mv移动之前加一个判断,如果目标文件已经存在,就计数器加一做区分,
  • 下载失败时,把down_file删除掉
  • 同时接受多个下载链接
#!/bin/bash
# 检查是否提供了下载链接作为参数
if [ "$#" -eq 0 ]; thenecho "Usage: $0 <download_url_1> <download_url_2> ..."exit 1
fi
# 遍历所有提供的下载链接
for download_url in "$@"; do# 使用wget下载文件, 临时文件名 downloaded_filewget "$download_url" -O downloaded_file# 检查下载是否成功if [ $? -ne 0 ]; thenecho "Download failed for $download_url."rm -f downloaded_file  # 在失败时删除临时文件continue  # 跳过到下一个链接fi# 获取文件后缀(去除.)extension="${download_url##*.}"# 获取当前时间并格式化timestamp=$(date +%Y%m%d_%H%M%S_%3N)# 构造新的文件名new_file_name="${timestamp}.${extension}"# 重命名文件mv "downloaded_file" "$new_file_name"# 检查是否重命名成功if [ $? -eq 0 ]; thenecho "Renamed to '$new_file_name' for $download_url"elseecho "Error renaming file for $download_url"continuefi# 根据后缀找到或创建文件夹路径folder_name="${extension}"counter=1# 检查文件名是否存在while [ -e "${folder_name}/$new_file_name" ]; donew_file_name="${timestamp}_${counter}.${extension}"((counter++))done# 创建文件夹(如果不存在)mkdir -p "$folder_name"# 移动文件到相应的文件夹中mv "$new_file_name" "$folder_name/"# 检查文件是否成功移动到文件夹中if [ $? -eq 0 ]; thenecho "Moved '$new_file_name' to '$folder_name/'"elseecho "Failed to move '$new_file_name' to '$folder_name/'"fi
done

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1547633.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode 968. 监控二叉树 树形dp、状态机 C++实现

问题&#xff1a;Leetcode 968. 监控二叉树 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 /*** Definition for a binary tree node.* struct TreeNo…

数据结构 ——— 移除元素(快慢指针)

目录 题目要求 代码实现&#xff08;快慢指针&#xff09; 题目要求 编写函数&#xff0c;给你一个数组 nums 和一个值 val&#xff0c;你需要在 nums 数组 原地 移除所有数值等于 val 的元素&#xff0c;并且返回移除后数组的新长度 不能使用额外的数组空间&#xff0c;要…

数据统计与分析-Numpy入门

Numpy入门 导包1.演示Numpy的属性演示打印Numpy数据类型shape()形状维度ndim() 轴dtype() 元素类型size()元素个数itemsize()每个匀速所占大小 2.创建Numpy对象2.1数组方式创建,函数:arrray()2.2创建空的ndarray对象2.2.1 zeros()2.2.2 ones()2.2.3 empty() 2.3创建1个指定范围…

大数据毕业设计选题推荐-内蒙古旅游景点数据分析系统-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

【智能控制】16章 基于Hopfield网络的路径优化,TSP问题

目录 15.6 基于Hopfield网络的路径优化 15.6.1 TSP问题 15.6.2 求解TSP问题的Hopfield神经网络设计 15.6 基于Hopfield网络的路径优化 15.6.1 TSP问题 旅行商问题&#xff08;Traveling Salesman Problem&#xff0c;简称TSP&#xff09;可描述为&#xff1a;已知N个城市之…

C# 的枚举(Enum)应用说明

一.Enum的定义&#xff1a; 枚举是一组命名整型的常量。枚举类型是使用 enum 关键字声明的&#xff0c;它是值类型。枚举包含自己的值&#xff0c;且不能继承或传递继承。 二.声明 enum 变量&#xff1a; 声明枚举的一般语法&#xff1a; enum <enum_name> { enumerati…

如何使用ssm实现基于BS的库存管理软件设计与实现+vue

TOC ssm708基于BS的库存管理软件设计与实现vue 绪论 课题背景 身处网络时代&#xff0c;随着网络系统体系发展的不断成熟和完善&#xff0c;人们的生活也随之发生了很大的变化。目前&#xff0c;人们在追求较高物质生活的同时&#xff0c;也在想着如何使自身的精神内涵得到…

FPGA学习(1)-mux2,2选1多路器

目录 1 开发板配套资料 1.1学习网址和资料网址 2.创建工程文件 2.1创建过程 2.2写程序及仿真测试 2.2.1 写程序生成电路 2.2.2仿真 2.2.3 生成执行文件并烧录 3.实验现象 买的小梅哥店铺的开发板&#xff1a;xc7z020clg400 看的小梅哥的视频&#xff1a;03C _基于ZYN…

Oracle 相关的工具使用 SQL Developer , sqlplus

Oracle 相关的工具使用 SQL Developer &#xff0c; sqlplus 一&#xff0c;Oracle SQL Developer 连接数据库 今天在连接sqldeveloper服务器时遇到了很多问题&#xff0c;但最终还是通过网上的博客解决了问题&#xff0c;我就在总结一下我的解决过程。 一.界面 首先&#…

混拨动态IP代理的优势是什么

在当今互联网时代&#xff0c;隐私保护和网络安全成为了人们关注的焦点。无论是个人用户还是企业&#xff0c;都希望能够在网络上自由、安全地进行各种活动。混拨动态IP代理作为一种新兴的技术手段&#xff0c;正逐渐受到大家的青睐。那么&#xff0c;混拨动态IP代理到底有哪些…

c语言常量变量

c语言常量变量 const 修饰常变量 #define定义标识符常量 #define num 10 //这里不需要分号int anum;enum枚举常量 enum Color {RED,GREEN,BLUE }; int main(){enum Color cRED;//枚举常量不允许修改 }//定义常量 int a10; char ba;错误语法注意 //定义常变量 const int a10…

windows 桌面采集音频

头文件&#xff1a; #ifndef __CAPTURE_AUDIO__ #define __CAPTURE_AUDIO__#include <functional> #include <windows.h> #pragma comment(lib, "winmm.lib")class CaptureAudio { public:CaptureAudio();~CaptureAudio();public:bool Init(const std::…

JSON与CSV之间的主要区别

今天要和大家深入探讨一个数据处理中的常见问题——JSON与CSV之间的主要区别。这两种数据格式各有千秋&#xff0c;适用于不同的场景。让我们一起来了解它们的特点和应用。 一、数据结构的差异 首先&#xff0c;JSON是一种轻量级的数据交换格式&#xff0c;能够表示复杂的数据…

Unity开发绘画板——04.笔刷大小调节

笔刷大小调节 上面的代码中其实我们已经提供了笔刷大小的字段&#xff0c;即brushSize&#xff0c;现在只需要将该字段和界面中的Slider绑定即可&#xff0c;Slider值的范围我们设置为1~20 代码中只需要做如下改动&#xff1a; public Slider brushSizeSlider; //控制笔刷大…

深圳易图讯科技场区态势感知系统

一、功能与目标优化描述&#xff1a; .图像采集、传输、存储与管理系统&#xff1a; 实时采集&#xff1a;利用摄像头、移动摄像设备及微距摄像头&#xff0c;全面覆盖场区内固定点位和重要场地&#xff0c;实现视频图像的实时采集。 高效传输&#xff1a;通过有线、无线网…

秒懂Linux之信号

目录 信号的基本概念 信号的处理方式 默认动作 自定义处理信号 忽略该信号 信号的产生方式 kill命令 键盘组合键 系统调用 软件条件 异常 信号产生的深层理解 core的功能 信号的阻塞 内核中的表示 sigset_t 信号集操作函数 sigprocmask sigpending …

关于最小二乘法

最小二乘法的核心思想简单而优雅&#xff1a;我们希望找到一条最佳的曲线&#xff0c;使其尽可能贴近所有的数据点。想象一下&#xff0c;当你在画布上描绘一条线&#xff0c;目标是让这条线与点的距离最小。数学上&#xff0c;这可以表示为&#xff1a; 在这个公式中&#xff…

基于nodejs+vue的水产品销售管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

【Linux篇】网络编程——I/O复用

目录 一、初识复用 1. 认识复用 2. 复用的优点 3. 复用技术在服务端的应用 二、select 技术 1. 设置文件描述符&#xff08;fd_set&#xff09; 2. 文件描述符的控制 &#xff08;1&#xff09;FD_ZERO &#xff08;2&#xff09;FD_SET &#xff08;3&#xff09;FD…

前端使用 Konva 实现可视化设计器(23)- 绘制曲线、属性面板

本章分享一下如何使用 Konva 绘制基础图形&#xff1a;曲线&#xff0c;以及属性面板的基本实现思路&#xff0c;希望大家继续关注和支持哈&#xff08;多求 5 个 Stars 谢谢&#xff09;&#xff01; 请大家动动小手&#xff0c;给我一个免费的 Star 吧~ 大家如果发现了 Bug&a…