繁体   English   中英

用管道将两个分隔符分隔的变量列表发送到BASH中的新命令

[英]Piping a list of two delimeter separated variables to a new command in BASH

我需要将两个用分隔符分隔的变量的列表传递给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

要按索引节点号恢复已删除的文件,可以使用命令行工具icat:

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

如何将其整洁地传递给命令以恢复所有文件?

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

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

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

确保您的文件名均不包含:并为您的女朋友买些花!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM