sh/bash/dash/ksh/zsh等Shell脚本
-
noble_out
- 帖子: 150
- 注册时间: 2012-04-20 15:58
- 系统: ubuntu12.04+windows8
- 来自: 中华人民共和国
-
联系:
#1
帖子
由 noble_out » 2015-01-14 15:42
代码: 全选
find ./ -name "access.log" -exec cat /dev/null > {} \;
上面的命令不起作用,但是下面的起作用,
代码: 全选
find ./ -name "access.log" -exec rm -f {} \;
这是什么情况?
-
lainme
- 论坛版主
- 帖子: 7805
- 注册时间: 2008-09-13 19:17
- 系统: Arch Linux (x86_64)
-
联系:
#2
帖子
由 lainme » 2015-01-14 16:41
-
noble_out
- 帖子: 150
- 注册时间: 2012-04-20 15:58
- 系统: ubuntu12.04+windows8
- 来自: 中华人民共和国
-
联系:
#3
帖子
由 noble_out » 2015-01-14 16:56
-
susbarbatus
- 帖子: 2966
- 注册时间: 2010-04-10 16:14
- 系统: Arch Linux
#4
帖子
由 susbarbatus » 2015-01-14 17:07
noble_out 写了:代码: 全选
find ./ -name "access.log" -exec cat /dev/null > {} \;
上面的命令不起作用,但是下面的起作用,
代码: 全选
find ./ -name "access.log" -exec rm -f {} \;
这是什么情况?
命令里面带重定向,shell 的解释会出问题,似乎是被理解成 find 本身的重定向了,非要用的话,可以用起个子 shell 来绕过这个问题。
代码: 全选
find ./ -name "access.log" -exec bash -c "cat /dev/null > {}" \;
看你的命令,似乎只是想清空文件而已,那么也可以
代码: 全选
find ./ -name "access.log" -exec truncate --size 0 {} \;
沉迷将棋中……
-
noble_out
- 帖子: 150
- 注册时间: 2012-04-20 15:58
- 系统: ubuntu12.04+windows8
- 来自: 中华人民共和国
-
联系:
#5
帖子
由 noble_out » 2015-01-26 17:00
susbarbatus 写了:
命令里面带重定向,shell 的解释会出问题,似乎是被理解成 find 本身的重定向了,非要用的话,可以用起个子 shell 来绕过这个问题。
代码: 全选
find ./ -name "access.log" -exec bash -c "cat /dev/null > {}" \;
看你的命令,似乎只是想清空文件而已,那么也可以
代码: 全选
find ./ -name "access.log" -exec truncate --size 0 {} \;
