【问题标题】:Piping a list of two delimeter separated variables to a new command in BASH将两个分隔符分隔变量的列表传递到 BASH 中的新命令
【发布时间】:2014-03-08 13:42:21
【问题描述】:

我需要将两个分隔符分隔变量的列表通过管道传输到 BASH 中的命令。我不小心从她的 SD 卡中删除了我女朋友的文件。我使用 dd 克隆了它的图像,并使用 Sleuth Kit 来恢复已删除文件的 inode 编号和名称。

fls -d -r bckup_irmasSD1.img | awk 'gsub(/\t|.*\*/,"")' | less

这给了我一个示例输出:

6689308:DCIM/Camera/2014-02-05 20.51.30.jpg
6689560:DCIM/Camera/2013-08-10 16.37.44.jpg
6689563:DCIM/Camera/2013-08-10 16.37.52.jpg
6689566:DCIM/Camera/2013-09-14 19.00.06.jpg
6689567:DCIM/Camera/_I966F~2.MP4
29211:Android/data/com.google.android.apps.maps/cache/_ACHE_~8.M
29298:Android/data/com.google.android.apps.maps/cache/_ACHE_~2.6
29301:Android/data/com.google.android.apps.maps/cache/cache_vts_GMM.7
29304:Android/data/com.google.android.apps.maps/cache/cache_vts_GMM.8
73224:bluetooth/DSC00360.jpg
73227:bluetooth/DSC00360_2.jpg
14728713:.downloadTemp/1616021_716182491801349_1111393555_n.mp4
14728718:.downloadTemp/1616117_10151911525912011_1690760246_n.mp4
18898441:download/1595926_47757
18898445:download/1614824_234800313358133_914357470_n.mp4
18898449:download/_24316~1.MP4

要通过inode号恢复被删除的文件,可以使用命令行工具icat:

icat -d /tmp/disk.img 18898449 > /recover/download/_24316~1.MP4

我怎样才能将它干净地传递给恢复所有文件的命令?

【问题讨论】:

    标签: linux bash pipe


    【解决方案1】:
    fls -d -r bckup_irmasSD1.img | 
    awk 'gsub(/\t|.*\*/,"")' |
    while IFS=: read -r inode filename; do
      mkdir -p /recover/"${filename%/*}"
      icat -d /tmp/disk.img $inode > /recover/"$filename"
    done
    

    【讨论】:

    • 这是完美的,只是如果它不存在我不知道如何修改它来创建目录。这里有一个帖子:stackoverflow.com/questions/4906579/…,希望信息能做到。我不知道我在寻找什么。
    • mkdir -p "$(dirname "$filename")"
    • 我认为这个答案比我的更可靠。无论哪种方式,请先进行备份!
    • +1,我更喜欢这个,只是不喜欢把 awk 和系统命令混在一起。
    【解决方案2】:

    你可以再次使用awk 来分割你的行,然后调用你的命令:

    fls -d -r bckup_irmasSD1.img | awk 'gsub(/\t|.*\*/,"")' > indoes.txt
    awk -F: '{system("icat -d " $1 " > " #2}' inodes.txt
    

    确保您的文件名中没有一个包含: 并为您的女朋友买一些花!

    【讨论】:

    • +1 建议买花,但这还不够!
    猜你喜欢
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 2019-04-29
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多