Marcel Logen
2025-02-17 16:50:54 UTC
Folgende Situation:
| ***@o15:/tmp$ pwd
| /tmp
| ***@o15:/tmp$ mkdir dir
| ***@o15:/tmp$ cd dir
| ***@o15:/tmp/dir$ mkdir abc def ghi
| ***@o15:/tmp/dir$ ( for i in . abc def ghi ; do touch ${i}/sample.txt ; done ) && ls -l *
| -rw-r--r-- 1 user15 user15 0 Feb 17 17:38 sample.txt
|
| abc:
| total 0
| -rw-r--r-- 1 user15 user15 0 Feb 17 17:38 sample.txt
|
| def:
| total 0
| -rw-r--r-- 1 user15 user15 0 Feb 17 17:38 sample.txt
|
| ghi:
| total 0
| -rw-r--r-- 1 user15 user15 0 Feb 17 17:38 sample.txt
| ***@o15:/tmp/dir$ find . -name 'sample.txt'
| ./sample.txt
| ./ghi/sample.txt
| ./abc/sample.txt
| ./def/sample.txt
| ***@o15:/tmp/dir$ printf '%s\n' /tmp/dir/*/sample.txt
| /tmp/dir/abc/sample.txt
| /tmp/dir/def/sample.txt
| /tmp/dir/ghi/sample.txt
| ***@o15:/tmp/dir$ printf '%s\n' /tmp/dir/{*,}/sample.txt
| /tmp/dir/abc/sample.txt
| /tmp/dir/def/sample.txt
| /tmp/dir/ghi/sample.txt
| /tmp/dir//sample.txt
| ***@o15:/tmp/dir$
man bash
<https://manpages.debian.org/bookworm/bash/bash.1.en.html#Pathname_Expansion>
| ***@o15:/tmp/dir$ bash --version | head -n 1
| GNU bash, version 5.2.15(1)-release (x86_64-pc-linux-gnu)
man ksh
<https://man.openbsd.org/ksh#File_name_patterns>
| This page documents version @(#)PD KSH v5.2.14 99/07/13.2
| of the public domain Korn shell.
Laut den man pages steht der Stern für eine beliebige
Anzahl von Zeichen (IMHO eben auch für keines).
Warum 'findet' das pathname pattern (unter ksh und bash)
/tmp/dir/*/sample.txt
nicht das file "sample.txt" auf der oberen Ebene?
Marcel (Lines: 71)
| ***@o15:/tmp$ pwd
| /tmp
| ***@o15:/tmp$ mkdir dir
| ***@o15:/tmp$ cd dir
| ***@o15:/tmp/dir$ mkdir abc def ghi
| ***@o15:/tmp/dir$ ( for i in . abc def ghi ; do touch ${i}/sample.txt ; done ) && ls -l *
| -rw-r--r-- 1 user15 user15 0 Feb 17 17:38 sample.txt
|
| abc:
| total 0
| -rw-r--r-- 1 user15 user15 0 Feb 17 17:38 sample.txt
|
| def:
| total 0
| -rw-r--r-- 1 user15 user15 0 Feb 17 17:38 sample.txt
|
| ghi:
| total 0
| -rw-r--r-- 1 user15 user15 0 Feb 17 17:38 sample.txt
| ***@o15:/tmp/dir$ find . -name 'sample.txt'
| ./sample.txt
| ./ghi/sample.txt
| ./abc/sample.txt
| ./def/sample.txt
| ***@o15:/tmp/dir$ printf '%s\n' /tmp/dir/*/sample.txt
| /tmp/dir/abc/sample.txt
| /tmp/dir/def/sample.txt
| /tmp/dir/ghi/sample.txt
| ***@o15:/tmp/dir$ printf '%s\n' /tmp/dir/{*,}/sample.txt
| /tmp/dir/abc/sample.txt
| /tmp/dir/def/sample.txt
| /tmp/dir/ghi/sample.txt
| /tmp/dir//sample.txt
| ***@o15:/tmp/dir$
man bash
<https://manpages.debian.org/bookworm/bash/bash.1.en.html#Pathname_Expansion>
| ***@o15:/tmp/dir$ bash --version | head -n 1
| GNU bash, version 5.2.15(1)-release (x86_64-pc-linux-gnu)
man ksh
<https://man.openbsd.org/ksh#File_name_patterns>
| This page documents version @(#)PD KSH v5.2.14 99/07/13.2
| of the public domain Korn shell.
Laut den man pages steht der Stern für eine beliebige
Anzahl von Zeichen (IMHO eben auch für keines).
Warum 'findet' das pathname pattern (unter ksh und bash)
/tmp/dir/*/sample.txt
nicht das file "sample.txt" auf der oberen Ebene?
Marcel (Lines: 71)
--
╭─╮ ╭───────╮ ╭───────╮ ╭───╮ ╭─╮ ╭─────╮ ╭─────────╮ ..67..
─╯ ╰──╯ ╭────╯ ╰─╮ ╭──╯ │ ╰─╯ ╰─╯ ╭──╯ │ ╭──────╯ ╭─╮
╰────╮ ╭─╮ │ ╰──╮ ╭─╯ ..41..╰───╮ │ │ ╭─╮ ╭──╯ │ ╭
╰──╯ ╰──╯ ╰──╯ ..45..╰─╯ ╰───╯ ╰─╯ ╰──╯
╭─╮ ╭───────╮ ╭───────╮ ╭───╮ ╭─╮ ╭─────╮ ╭─────────╮ ..67..
─╯ ╰──╯ ╭────╯ ╰─╮ ╭──╯ │ ╰─╯ ╰─╯ ╭──╯ │ ╭──────╯ ╭─╮
╰────╮ ╭─╮ │ ╰──╮ ╭─╯ ..41..╰───╮ │ │ ╭─╮ ╭──╯ │ ╭
╰──╯ ╰──╯ ╰──╯ ..45..╰─╯ ╰───╯ ╰─╯ ╰──╯