windows下的实现方式。将下面的程序复制,粘贴到一个新建的文本文档中,保存为.bat格式的文件,文件放到要处理的图片根目录

dir /a-d /b /s /od "*.png" > path.txt



 

详情可以参考dir命令的参数



DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

  [drive:][path][filename]
              指定要列出的驱动器、目录和/或文件。

  /A          显示具有指定属性的文件。
  属性         D  目录                R  只读文件
               H  隐藏文件            A  准备存档的文件
               S  系统文件            I  无内容索引文件
               L  解析点             -  表示“否”的前缀
  /B          使用空格式(没有标题信息或摘要)。
  /C          在文件大小中显示千位数分隔符。这是默认值。用 /-C 来
              禁用分隔符显示。
  /D          跟宽式相同,但文件是按栏分类列出的。
  /L          用小写。
  /N          新的长列表格式,其中文件名在最右边。
  /O          用分类顺序列出文件。
  排列顺序     N  按名称(字母顺序)     S  按大小(从小到大)
               E  按扩展名(字母顺序)   D  按日期/时间(从先到后)
               G  组目录优先           -  反转顺序的前缀
  /P          在每个信息屏幕后暂停。
  /Q          显示文件所有者。
  /R          显示文件的备用数据流。
  /S          显示指定目录和所有子目录中的文件。
  /T          控制显示或用来分类的时间字符域。
  时间段      C  创建时间
              A  上次访问时间
              W  上次写入的时间
  /W          用宽列表格式。
  /X          显示为非 8.3 文件名产生的短名称。格式是 /N 的格式,
              短名称插在长名称前面。如果没有短名称,在其位置则
              显示空白。
  /4          用四位数字显示年

可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)
来替代预先设定的开关。例如,/-W。



 

文件重命名+按文件名的数字大小排序。addNumber为文件名字要增加的数据,比如,想将000001.png改为000101.png,以此类推,名字数值增加100,则让addNumber=100即可。

validNumber为保留的文件名的有效位数,如果validNumber=6,则重命名的文件名为000001.png,如果为3,则为001.png



@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /a-d/b *.png') do (
    set "fn=000000000000%%~na"
    set "#!fn:~-10!=%%a"    
)
set addNumber=0
set validNumber=6
set /a validNumber=%validNumber%+4
for /f "tokens=1* delims==" %%c in ('set #') do (
    set namee=%%c
    set namee=!namee:~-6!
    set /a namee=1!namee!+%addNumber%-1000000
    set newName=000000000!namee!.png
    set newName=!newName:~-%validNumber%!
    if exist %%d ren %%d !newName!
)



 

在linux下的实现方式如下:可以直接运行命令,也可以写入.sh文件



#不带路径:grep 表示筛选规则
ls -R /path/ | grep '*.*'



#带路径: -maxdepth 1 代表只递归一层目录,如果要所有目录则去掉这个参数就可以了 find /path/ -maxdepth 1 -name "*" | grep '*.*'



#查找目录下所有相关文件,然后修改文件中的关键变量。下例为查找到/path/目录下所有.sh文件,并查找所有.sh文件中的done字符串,将这些字符串替换成mmmm字符串
#sed 的查找替换规则可以查阅正则表达式。
find /path/ -name "*.sh" | xargs sed -i 's/done/mmmm/g'

快速获得当前文件夹中的jpg图片,并做成xml文件



@echo off
set folder=%cd%
set dst=image.xml

echo ^<?xml version="1.0"?^> > %dst%
echo ^<opencv_storage^> >> %dst%
echo ^<imagelist^> >> %dst%

for /f "tokens=*" %%j in (' dir /a-d /b /s "%folder%\*.jpg" ') do (
echo     "%%j" >> %dst% )
echo ^</imagelist^> >> %dst%
echo ^</opencv_storage^> >> %dst%

空格,特别是=号后面,否则会错误!!!!