假如现在我有一个文本,内容如下
/home/fdfs_storage/data/1C/4B/wKgBc2ASh2OAbwzlAAXW0XxiphE875.jpg
/home/fdfs_storage/data/1C/4B/wKgBc2ASiF2AdqCtAAWrBVo-g9Y740.jpg
/home/fdfs_storage/data/1C/4B/wKgBcmASiKCAZ5VIAAWWRheIptg999.jpg
/home/fdfs_storage/data/1C/4B/wKgBcmASiLWAFFbOAAV4ojTPiZs627.jpg
...
我想把这些文件提取,并且包括文件夹,比如把 /home/fdfs_storage/data/1C/4B/wKgBc2ASh2OAb国外服务器wzlAAXW0XxiphE875.jpg 复制到 /databak/1C/4B/wKgBc2ASh2OAbwzlAAXW0XxiphE875.jpg
就是 data 后面那部分都要,有什么好的方法吗
sed '[email protected]/home/fdfs_storage/data/@/databak/@'
看起来要复制文件,直接 mv/cp/rsync 不好嘛
rsynv -a /home/fdfs_storage/data/ /databak/
或者说怎么把内容替换成:
cp -r /home/fdfs_storage/data/1C/4B/wKgBc2ASh2OAbwzlAAXW0XxiphE875.jpg /databak/1C/4B/wKgBc2ASh2OAbwzlAAXW0XxiphE875.jpg
有六万多个图需要提取
/home/fdfs_storage/data/1C/4B 下面是有很多图片的,我只需要其中几张,每个 /data/XX/XX 下面都有个别图片要提取
ls /home/fdfs_storage/data/* | xargs -I {} echo cp -r /home/fdfs_storage/data/{} /databak/{}
/data/XX/XX 这里的文件夹不是固定的哦
/home/fdfs_storage/1.txt`
for FILE in $TXT;do
A=`grep $FILE 1.txt | awk -F '/' '{print $4}'`
B=`grep $FILE 1.txt | awk -F '/' '{print $5}'`
C=`grep $FILE 1.txt | awk -F '/' '{print $6}'`
mkdir -p /$A/$B/$C
cp $FILE "/$A/$B/$C"
done
搞定了
不是说好的 sed 问题吗?那就用 sed 实现 [手动滑稽]
你之前的需求,用 sed 实现的话就这样:
cat 1.txt | sed 's/databak/&-r /' > 2.txt
但实际还需要创建目录所以应该这样:
cat 1.txt | sed 's-p /' > 2.sh
cat 1.txt | sed 's/databak/&-r /' >> 2.sh
然后执行 2.sh 就能备份你的文件
sh 2.sh
其实实现起来也有其他简单的方法,cp 有个参数是带原始目录拷贝的,拷贝完了,再移到你要的目录并删除无用的目录即可
代码粘不上来,触发了 v2 的规则:创建新回复过程中遇到一些问题:
请不要在每一个回复中都包括外链,这看起来像是在 spamming
想不出来 我裂开了
不过学习了 谢谢了哈哈
其实有你发帖的时间用一个你擅长的脚本语言早就写完了。
cat 1.txt | sed 's/databak/--p 删除我 arents /'
mkdir /databak
执行刚生成的脚本
mv /databak/home/fdfs_storage/data/* /databak
rm -R /databak/home
迷之判断规则,发好多次都不行