当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 23 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-27 14:51 

注册: 2007-12-05 10:57
帖子: 1003
地址: 金山
系统: ubuntu14.04
送出感谢: 13
接收感谢: 62
从书上学到一条命令,如下
代码:
find /home/someone -type d  | sed 's;/home/someone/;/home/someone/lt/;' | sed 's/^/mkdir -p  /' | sh -x


其中 /home/someone为当前用户的家目录

功能是find所有 /home/someone目录下的文件夹,
然后经过两道sed的工序的处理,将找到的文件夹创建在/home/someone/lt/目录下

但是执行这条命令时 /home/someone下会创建出许多空文件夹来。
从命令来理解/home/someone目录下除了创建的lt文件夹,不会再有别的文件夹创建。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-27 15:45 
头像

注册: 2010-06-16 1:05
帖子: 14668
地址: Tencent
系统: Mac OS X
送出感谢: 1
接收感谢: 153
技术不过关,没看出来。把这命令分拆出来一步一步的看输出应该很容易找出问题


_________________
twitter求fo:http://twitter.com/maplebeats
博客求踩:http://maplebeats.com


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-27 16:37 

注册: 2007-12-05 10:57
帖子: 1003
地址: 金山
系统: ubuntu14.04
送出感谢: 13
接收感谢: 62
枫叶饭团 写道:
技术不过关,没看出来。把这命令分拆出来一步一步的看输出应该很容易找出问题


一步一步分过了
没查到mkdir 在/home/someone下直接创建的文件夹的输出
所有的行都被替换成了mkdir -p /home/someone/lt/...


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-27 16:49 
头像

注册: 2010-06-16 1:05
帖子: 14668
地址: Tencent
系统: Mac OS X
送出感谢: 1
接收感谢: 153
那些空文件夹的名字呢?


_________________
twitter求fo:http://twitter.com/maplebeats
博客求踩:http://maplebeats.com


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-27 17:00 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
枫叶饭团 写道:
那些空文件夹的名字呢?

看样子是遇到空格了。


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-27 17:06 

注册: 2007-12-05 10:57
帖子: 1003
地址: 金山
系统: ubuntu14.04
送出感谢: 13
接收感谢: 62
枫叶饭团 写道:
那些空文件夹的名字呢?


One Data Explorer Files Internet Nemu Servers .....


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-27 17:16 

注册: 2007-12-05 10:57
帖子: 1003
地址: 金山
系统: ubuntu14.04
送出感谢: 13
接收感谢: 62
lilydjwg 写道:
枫叶饭团 写道:
那些空文件夹的名字呢?

看样子是遇到空格了。


你是说包含空格的文件夹名吗

find 找的是 /home/someone下的文件夹

所以find的输出行都是 以/home/someone/开头
然后替换成 以mkdir -p /home/someone/lt/开头

这和空格有什么关系


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-27 18:17 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
cao627 写道:
lilydjwg 写道:
枫叶饭团 写道:
那些空文件夹的名字呢?

看样子是遇到空格了。


你是说包含空格的文件夹名吗

find 找的是 /home/someone下的文件夹

所以find的输出行都是 以/home/someone/开头
然后替换成 以mkdir -p /home/someone/lt/开头

这和空格有什么关系

代码:
mkdir -vp /home/someone/lt/Whitespace Matters


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc



_________________
评价: 3.7% cao627
 
页首
 用户资料  
 
9 楼 
 文章标题 : Re: 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-27 18:20 

注册: 2007-12-05 10:57
帖子: 1003
地址: 金山
系统: ubuntu14.04
送出感谢: 13
接收感谢: 62
lilydjwg 写道:
cao627 写道:
lilydjwg 写道:
枫叶饭团 写道:
那些空文件夹的名字呢?

看样子是遇到空格了。


你是说包含空格的文件夹名吗

find 找的是 /home/someone下的文件夹

所以find的输出行都是 以/home/someone/开头
然后替换成 以mkdir -p /home/someone/lt/开头

这和空格有什么关系

代码:
mkdir -vp /home/someone/lt/Whitespace Matters


懂了 谢谢


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-27 19:32 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
其实对于这种问题,解决办法的第一步应该是去掉最后一个管道(| sh -x),这样就把那些命令列出来了,一看就知道哪里有问题。

另外,两个 sed 可以合为一个,因为一个 sed 内部可以有两条 s 命令。


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-28 8:17 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: [email protected]
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
蛋疼!看这个!
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3678971&page=1#pid21903357


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-28 19:32 

注册: 2007-12-05 10:57
帖子: 1003
地址: 金山
系统: ubuntu14.04
送出感谢: 13
接收感谢: 62
看过了
代码:
find  ....  -exec mkdir ....{} \;

看来find命令的作者是考虑到并解决了空格文件名带来的麻烦的


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-28 19:39 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
cao627 写道:
看过了
代码:
find  ....  -exec mkdir ....{} \;

看来find命令的作者是考虑到并解决了空格文件名带来的麻烦的

你错了,find 命令根本不用管这个,因为它只需要把 {} 替换成文件名就可以了。find 并不会调用 shell,而是直接 execv,所以毫无问题。


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
14 楼 
 文章标题 : Re: 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-28 19:51 

注册: 2007-12-05 10:57
帖子: 1003
地址: 金山
系统: ubuntu14.04
送出感谢: 13
接收感谢: 62
lilydjwg 写道:
cao627 写道:
看过了
代码:
find  ....  -exec mkdir ....{} \;

看来find命令的作者是考虑到并解决了空格文件名带来的麻烦的

你错了,find 命令根本不用管这个,因为它只需要把 {} 替换成文件名就可以了。find 并不会调用 shell,而是直接 execv,所以毫无问题。


代码:
mkdir -vp /home/someone/lt/Whitespace Matters

这条命令会这样执行:
在 /home/someone/lt/目录下创建Whitespace
在当前目录下创建Matters

如果{}只是简单把find找到的内容替换进来,那么我也会在执行find .... -exec mkdir ....{} \;后,在当前目录下生成类似Matters这种由于文件名空格产生的文件
但是没有,说明{}解决了这个问题,而{}是find的一部分,所以 说:“看来find命令的作者是考虑到并解决了空格文件名带来的麻烦的”


页首
 用户资料  
 
15 楼 
 文章标题 : Re: 书上学到的一条命令,将一个目录下的目录树,创建到另一个目录下,但有点不解。
帖子发表于 : 2012-03-28 20:39 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: [email protected]
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
cao627, 你没理解那个道道


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 23 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译