如何将特定文件名的文件复制到新目录,并且保留原有的目录结构?

sh/bash/dash/ksh/zsh等Shell脚本
回复
cmjman
帖子: 5
注册时间: 2013-03-09 20:19
送出感谢: 0
接收感谢: 0

如何将特定文件名的文件复制到新目录,并且保留原有的目录结构?

#1

帖子 cmjman » 2013-03-09 20:27

其实是Android的问题,但是由于读取系统区文件有权限限制,必须用root权限以linux命令或者shell脚本形式复制。

比如有这样地址的db文件多个 /data/data/packagename/databases/webview.db 其中的packagename是包名,不固定,有多个

代码: 全选

cp -r /data/data/*/databases/webview.db /sdcard/test 
这样直接复制的话,由于目的文件夹是唯一的,最终生成的只有一个webview.db,一直在重复读写了,对Linux命令不是很熟悉,想请教下,有没有方法,保留原有的目录结构,即/sdcard/test/*/databases/webview.db 以这种形式生成新目录,或者直接将文件名改名后放到同个目录也可以,主要想在APP中实现提取webview.db文件进行分析。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 如何将特定文件名的文件复制到新目录,并且保留原有的目录结构?

#2

帖子 eexpress » 2013-03-09 20:46

mkdir -p 先。你这样的要求,基本要自己处理。
不会是adb操作吧。难说那系统带的tinybox,支持-p参数。你试试。
● 鸣学
cmjman
帖子: 5
注册时间: 2013-03-09 20:19
送出感谢: 0
接收感谢: 0

Re: 如何将特定文件名的文件复制到新目录,并且保留原有的目录结构?

#3

帖子 cmjman » 2013-03-09 20:53

eexpress 写了:mkdir -p 先。你这样的要求,基本要自己处理。
不会是adb操作吧。难说那系统带的tinybox,支持-p参数。你试试。
抱歉哈,对Linux命令不大熟悉,昨晚遇到的这个问题,然后今天各种查书,还是解决不了,可能要求有点小过分哈~
试过 cp -p ,似乎没有太大的作用,效果还是一样的,都是说 -p 是可以保留目录结构的,但是我这边实测了下,没有效果,不知道是不是Android系统的问题

由于我这个APP是在root之后机子上使用,大部分root后的Android都会装busybox,集成了基本的Linux命令,就是苦于不会用。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 如何将特定文件名的文件复制到新目录,并且保留原有的目录结构?

#4

帖子 eexpress » 2013-03-09 20:56

代码: 全选

NAME
       mkdir - make directories

SYNOPSIS
       mkdir [OPTION]... DIRECTORY...


-p, --parents
              no error if existing, make parent directories as needed
我说的是这个-p。需要自己提取目录,然后mkdir,然后cp。通常是写一个脚本。

另外,你备份db这些文件,没啥意义啊。有好多app,支持备份系统设置的。不需要cli自己搞。
● 鸣学
cmjman
帖子: 5
注册时间: 2013-03-09 20:19
送出感谢: 0
接收感谢: 0

Re: 如何将特定文件名的文件复制到新目录,并且保留原有的目录结构?

#5

帖子 cmjman » 2013-03-09 21:03

eexpress 写了:

代码: 全选

NAME
       mkdir - make directories

SYNOPSIS
       mkdir [OPTION]... DIRECTORY...


-p, --parents
              no error if existing, make parent directories as needed
我说的是这个-p。需要自己提取目录,然后mkdir,然后cp。通常是写一个脚本。

另外,你备份db这些文件,没啥意义啊。有好多app,支持备份系统设置的。不需要cli自己搞。
额,不是备份啦,其实是想提取到普通数据区,然后用java代码进行一些数据上的分析,因为原数据库直接用java没有权限读取,只能先复制出来在分析处理了~
cmjman
帖子: 5
注册时间: 2013-03-09 20:19
送出感谢: 0
接收感谢: 0

Re: 如何将特定文件名的文件复制到新目录,并且保留原有的目录结构?

#6

帖子 cmjman » 2013-03-10 0:01

最后还是自己实现了,分享下,先提取文件打包到数据区,然后解压即可~完整的保存了原始目录结构,并且只提取了每个目录下相应的webview.db文件~~都怪对linux命令不熟悉啊~~ :em06
sk1418
帖子: 229
注册时间: 2007-07-01 17:36
系统: (En):System
来自: (En):address
送出感谢: 2 次
接收感谢: 3 次
联系:

Re: 如何将特定文件名的文件复制到新目录,并且保留原有的目录结构?

#7

帖子 sk1418 » 2013-03-10 5:15

要保留原来目录结构的复制,可以考虑用tar.
---
regards,

Kent
cmjman
帖子: 5
注册时间: 2013-03-09 20:19
送出感谢: 0
接收感谢: 0

Re: 如何将特定文件名的文件复制到新目录,并且保留原有的目录结构?

#8

帖子 cmjman » 2013-03-10 11:54

sk1418 写了:要保留原来目录结构的复制,可以考虑用tar.
是的,昨晚已经自行尝试用tar实现了,thank you~ :em01
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30
送出感谢: 2 次
接收感谢: 31 次

Re: 如何将特定文件名的文件复制到新目录,并且保留原有的目录结构?

#9

帖子 aerofox » 2013-03-12 21:59

cmjman 写了:最后还是自己实现了,分享下,先提取文件打包到数据区,然后解压即可~完整的保存了原始目录结构,并且只提取了每个目录下相应的webview.db文件~~都怪对linux命令不熟悉啊~~ :em06
可以一个管道解决的。

cd /data/data

代码: 全选

tar c */databases/webview.db | tar Cxv /sdcard/test
另一个适合这种工作的工具是 cpio
回复

回到 “Shell脚本”