这个命令怎么不起作用

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 > {} \;
上面的命令不起作用,但是下面的起作用, :em20

代码: 全选

find ./ -name "access.log"  -exec rm -f {} \;
这是什么情况?
头像
lainme
论坛版主
帖子: 7805
注册时间: 2008-09-13 19:17
系统: Arch Linux (x86_64)
联系:

Re: 这个命令怎么不起作用

#2

帖子 lainme » 2015-01-14 16:41

头像
noble_out
帖子: 150
注册时间: 2012-04-20 15:58
系统: ubuntu12.04+windows8
来自: 中华人民共和国
联系:

Re: 这个命令怎么不起作用

#3

帖子 noble_out » 2015-01-14 16:56

头像
susbarbatus
帖子: 2966
注册时间: 2010-04-10 16:14
系统: Arch Linux

Re: 这个命令怎么不起作用

#4

帖子 susbarbatus » 2015-01-14 17:07

noble_out 写了:

代码: 全选

find ./ -name "access.log"  -exec cat /dev/null > {} \;
上面的命令不起作用,但是下面的起作用, :em20

代码: 全选

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
来自: 中华人民共和国
联系:

Re: 这个命令怎么不起作用

#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 {} \;
:em38
回复