bug-findutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bug reports


From: Bernhard Voelker
Subject: Re: Bug reports
Date: Thu, 30 Jan 2020 08:14:28 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1

On 2020-01-29 16:26, 李亮 wrote:
> Hi,
> 
> I executed two commands
> 
> 
> 
> 1
> find /mnt/src  -mindepth 3  -maxdepth 3  -type d -exec echo `echo {} | sed 
> 's/\/mnt\/src\//&\.\//'` \;
> The output is
> /mnt/src/1001/202001/20200101
> /mnt/src/1001/202001/20200102
> /mnt/src/1001/202001/20200128
> 
> 
> 2
> find /mnt/src  -mindepth 3  -maxdepth 3  -type d -exec echo `echo 
> /mnt/src/2001/202001/20200128 | sed 's/\/mnt\/src\//&\.\//'` \;
> The output is
> /mnt/src/./2001/202001/20200128
> /mnt/src/./2001/202001/20200128
> /mnt/src/./2001/202001/20200128
> 
> 
> 
> The second command is the format of the output I want, which I'm not sure is 
> a bug or my usage error.
> 
> Looking forward to reply.

The problem in example 1 is the use of the backticks `...`: the command between
is executed by the calling shell before 'find' even sees it.

  $ echo {} | sed 's/\/mnt\/src\//&\.\//'
  {}

This result is then passed as argument to find which then effectively runs like:

  $ find /mnt/src  -mindepth 3  -maxdepth 3  -type d -exec echo '{}' \;

I'm not 100% sure what you want to achieve with this additional './' (because 
it's redundant),
but you probably want something like this?

  $ mkdir -pv /mnt/src/1001/202001/20200101  /mnt/src/1001/202001/20200102 
/mnt/src/1001/202001/20200128
  mkdir: created directory '/mnt/src'
  mkdir: created directory '/mnt/src/1001'
  mkdir: created directory '/mnt/src/1001/202001'
  mkdir: created directory '/mnt/src/1001/202001/20200101'
  mkdir: created directory '/mnt/src/1001/202001/20200102'
  mkdir: created directory '/mnt/src/1001/202001/20200128'

  $ find /mnt/src  -mindepth 3  -maxdepth 3  -type d -printf '%H/.%p\n'
  /mnt/src/./mnt/src/1001/202001/20200102
  /mnt/src/./mnt/src/1001/202001/20200101
  /mnt/src/./mnt/src/1001/202001/20200128

Have a nice day,
Berny



reply via email to

[Prev in Thread] Current Thread [Next in Thread]