背景: 有a, b两个文件夹, a, b下分别有50个文件夹, 每个文件夹都有个视频文件叫video.mp4
问题: 如何循环修改这些文件名, 比如修改为: video1.mp4, video2.mp4......然后存到一个文件夹, 比如文件夹c里?
虽然我用java写应该可以实现, 但是感觉太麻烦. 网上说貌似awk可以实现, 效率高, 不过重命名怎么做呢, 捣鼓半天也只能print出来, 或者有其他语言能高效完成的也行, 能有个实例就太感谢了~
虽然我用java写应该可以实现, 但是感觉太麻烦. 网上说貌似awk可以实现, 效率高, 不过重命名怎么做呢, 捣鼓半天也只能print出来, 或者有其他语言能高效完成的也行, 能有个实例就太感谢了~
简单实现一个,假设a, b下只有一级子目录:
import glob
import shutil
index = 1
for dir in ['./a', './b']:
for f in glob.glob('%s/*/video.mp4' % dir):
shutil.copy(f, './c/video%d.mp4' % index)
index += 1
#!/bin/bash
regex="mp4"
i=1
path=~/Desktop/video
find "." -type f | grep $regex | while read line
do
newName=$i-$name;
cp $line $path/$newName;
i=`expr $i + 1`;
done
自问自答, 写了个shell的实现, 和python差不多, 然而awk还是不太会用啊
生成测试数据
for i in `seq 100`;do mkdir -p a/$i b/$i && touch a/$i/video.mp4 b/$i/video.mp4;done
然后
i=1;for f in `find a b -type f -name video.mp4`;do mv $f c/$i-`basename $f`;i=`expr $i + 1`;done
15 回答8.4k 阅读
7 回答5.3k 阅读
8 回答6.2k 阅读
4 回答4.4k 阅读✓ 已解决
4 回答4k 阅读
4 回答3.8k 阅读✓ 已解决
2 回答5.9k 阅读✓ 已解决
find -name 'video.mp4' | nl -w1 | sed 's/([0-9]+)t(./video.mp4)/2 c/video1.mp4/' | xargs -n 2 cp
sed那块拼字符串,用awk也能做到。