跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • sed 问题,求解答
未分類
23 2 月 2021

sed 问题,求解答

sed 问题,求解答

資深大佬 : Usaki 2

假如现在我有一个文本,内容如下 /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/wKgBc2ASh2OAbwzlAAXW0XxiphE875.jpg 复制到 /databak/1C/4B/wKgBc2ASh2OAbwzlAAXW0XxiphE875.jpg 就是 data 后面那部分都要,有什么好的方法吗

大佬有話說 (15)

  • 資深大佬 : rrfeng

    sed ‘[email protected]/home/fdfs_storage/data/@/databak/@’

  • 資深大佬 : rrfeng

    看起来要复制文件,直接 mv/cp/rsync 不好嘛

    rsynv -a /home/fdfs_storage/data/ /databak/

  • 主 資深大佬 : Usaki

    或者说怎么把内容替换成:
    cp -r /home/fdfs_storage/data/1C/4B/wKgBc2ASh2OAbwzlAAXW0XxiphE875.jpg /databak/1C/4B/wKgBc2ASh2OAbwzlAAXW0XxiphE875.jpg

  • 主 資深大佬 : Usaki

    @rrfeng 有六万多个图需要提取

  • 主 資深大佬 : Usaki

    @rrfeng /home/fdfs_storage/data/1C/4B 下面是有很多图片的,我只需要其中几张,每个 /data/XX/XX 下面都有个别图片要提取

  • 資深大佬 : axeprpr1

    ls /home/fdfs_storage/data/* | xargs -I {} echo cp -r /home/fdfs_storage/data/{} /databak/{}

  • 主 資深大佬 : Usaki

    @axeprpr1 /data/XX/XX 这里的文件夹不是固定的哦

  • 主 資深大佬 : Usaki

    #!/bin/bash

    TXT=`cat /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

    搞定了

  • 資深大佬 : squarer

    不是说好的 sed 问题吗?那就用 sed 实现 [手动滑稽]
    你之前的需求,用 sed 实现的话就这样:
    cat 1.txt | sed ‘s#data.*#& /databak/&#;s#databak/data#databak#;s/^/cp -r /’ > 2.txt

    但实际还需要创建目录所以应该这样:
    cat 1.txt | sed ‘s#.*data#/databak#;s#.*/#&+++#;s#+++.*##;s/^/mkdir -p /’ > 2.sh
    cat 1.txt | sed ‘s#data.*#& /databak/&#;s#databak/data#databak#;s/^/cp -r /’ >> 2.sh
    然后执行 2.sh 就能备份你的文件
    sh 2.sh

  • 資深大佬 : squarer

    其实实现起来也有其他简单的方法,cp 有个参数是带原始目录拷贝的,拷贝完了,再移到你要的目录并删除无用的目录即可

    代码粘不上来,触发了 v2 的规则:创建新回复过程中遇到一些问题:
    请不要在每一个回复中都包括外链,这看起来像是在 spamming

  • 主 資深大佬 : Usaki

    @squarer 想不出来 我裂开了
    不过学习了 谢谢了哈哈

  • 資深大佬 : Jirajine

    其实有你发帖的时间用一个你擅长的脚本语言早就写完了。

  • 資深大佬 : squarer

    cat 1.txt | sed ‘s#$# /databak/#;s/^/cp –p 删除我 arents /’

  • 資深大佬 : squarer

    mkdir /databak
    执行刚生成的脚本
    mv /databak/home/fdfs_storage/data/* /databak
    rm -R /databak/home

  • 資深大佬 : squarer

    迷之判断规则,发好多次都不行

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具