Bash 重命名子文件夹中的.jpg文件
我需要重命名子文件夹中的大量文件。例如,我有:Bash 重命名子文件夹中的.jpg文件,bash,file-rename,gnu-parallel,Bash,File Rename,Gnu Parallel,我需要重命名子文件夹中的大量文件。例如,我有: ParentFolder/sub-Folders/*.jpg 如何按照如下方式复制具有新命名约定的文件 ParentFolder1.jpg ParentFolder2.jpg 一种方法是通过。教程: 要在执行命令之前查看要运行的命令,请尝试: find ./ParentFolder -name "*.jpg" | parallel --dryrun "mv {} DESTINATION/ParentFolder{#}.jpg" 一种方法是通过
ParentFolder/sub-Folders/*.jpg
如何按照如下方式复制具有新命名约定的文件
ParentFolder1.jpg
ParentFolder2.jpg
一种方法是通过。教程:
要在执行命令之前查看要运行的命令,请尝试:
find ./ParentFolder -name "*.jpg" | parallel --dryrun "mv {} DESTINATION/ParentFolder{#}.jpg"
一种方法是通过。教程:
要在执行命令之前查看要运行的命令,请尝试:
find ./ParentFolder -name "*.jpg" | parallel --dryrun "mv {} DESTINATION/ParentFolder{#}.jpg"
使用文件全局复制在完整路径上使用重命名:
*/*
如果您不理解,可以使用以下方法进行测试:
echo */*
第一个*是您的目录,第二个*是您的文件名。在正则表达式中捕获它们:
(.*)/(.*)
现在$1是您的父文件夹名,$2是您的文件名。您可以像这样轻松构建解决方案:
rename -n "s/(.*)\/(.*)/\$1\/\$1\$2/" */*
它保持目录结构,并将目录名作为前缀添加到每个文件中。只需将\$1\/\$1\$2
更改为\$1\$2
即可将文件上移。然后只需使用rmdir删除空目录
我自愿添加了选项-n,这样如果复制粘贴,就不会造成混乱。只要在你认为合适的时候删除这个选项就行了
adrien@adrienLT:~/Documents/PEV$ cp -r Holiday/ Holiday_copy/
adrien@adrienLT:~/Documents/PEV$ tree Holiday*
Holiday
├── France
│ ├── 1.jpg
│ ├── 2.jpg
│ └── 3.jpg
├── Italy1
│ ├── 1.jpg
│ ├── 2.jpg
│ └── 3.jpg
└── Italy2
├── 1.jpg
├── 2.jpg
└── 3.jpg
Holiday_copy
├── France
│ ├── 1.jpg
│ ├── 2.jpg
│ └── 3.jpg
├── Italy1
│ ├── 1.jpg
│ ├── 2.jpg
│ └── 3.jpg
└── Italy2
├── 1.jpg
├── 2.jpg
└── 3.jpg
6 directories, 18 files
adrien@adrienLT:~/Documents/PEV$ cd Holiday_copy/
adrien@adrienLT:~/Documents/PEV/Holiday_copy$ rename "s/(.*)\/(.*)/\$1\/\$1\$2/" */*
adrien@adrienLT:~/Documents/PEV/Holiday_copy$ tree .
.
├── France
│ ├── France1.jpg
│ ├── France2.jpg
│ └── France3.jpg
├── Italy1
│ ├── Italy11.jpg
│ ├── Italy12.jpg
│ └── Italy13.jpg
└── Italy2
├── Italy21.jpg
├── Italy22.jpg
└── Italy23.jpg
3 directories, 9 files
使用文件全局复制在完整路径上使用重命名:
*/*
如果您不理解,可以使用以下方法进行测试:
echo */*
第一个*是您的目录,第二个*是您的文件名。在正则表达式中捕获它们:
(.*)/(.*)
现在$1是您的父文件夹名,$2是您的文件名。您可以像这样轻松构建解决方案:
rename -n "s/(.*)\/(.*)/\$1\/\$1\$2/" */*
它保持目录结构,并将目录名作为前缀添加到每个文件中。只需将\$1\/\$1\$2
更改为\$1\$2
即可将文件上移。然后只需使用rmdir删除空目录
我自愿添加了选项-n,这样如果复制粘贴,就不会造成混乱。只要在你认为合适的时候删除这个选项就行了
adrien@adrienLT:~/Documents/PEV$ cp -r Holiday/ Holiday_copy/
adrien@adrienLT:~/Documents/PEV$ tree Holiday*
Holiday
├── France
│ ├── 1.jpg
│ ├── 2.jpg
│ └── 3.jpg
├── Italy1
│ ├── 1.jpg
│ ├── 2.jpg
│ └── 3.jpg
└── Italy2
├── 1.jpg
├── 2.jpg
└── 3.jpg
Holiday_copy
├── France
│ ├── 1.jpg
│ ├── 2.jpg
│ └── 3.jpg
├── Italy1
│ ├── 1.jpg
│ ├── 2.jpg
│ └── 3.jpg
└── Italy2
├── 1.jpg
├── 2.jpg
└── 3.jpg
6 directories, 18 files
adrien@adrienLT:~/Documents/PEV$ cd Holiday_copy/
adrien@adrienLT:~/Documents/PEV/Holiday_copy$ rename "s/(.*)\/(.*)/\$1\/\$1\$2/" */*
adrien@adrienLT:~/Documents/PEV/Holiday_copy$ tree .
.
├── France
│ ├── France1.jpg
│ ├── France2.jpg
│ └── France3.jpg
├── Italy1
│ ├── Italy11.jpg
│ ├── Italy12.jpg
│ └── Italy13.jpg
└── Italy2
├── Italy21.jpg
├── Italy22.jpg
└── Italy23.jpg
3 directories, 9 files
啊,--dryrun
,甚至更好!祝大家好运。啊,--dryrun
,更好!祝大家好运。