Sua nova edição especifica que você está usando tcsh
- inicialmente presumi que você estava usando bash
. Você poderia chamar find
de dentro de uma invocação de find -exec
e canalizar cada invocação interna de find
para head
para extrair o primeiro resultado, por exemplo,
find /net/* -maxdepth 1 -exec tcsh -c "find {} -maxdepth 1 -type f -name '*.mb' -size +200M | head -1" \;
Aqui está um pequeno exemplo de demonstração:
# Create the directory structure
mkdir -p test/abc/scenes
mkdir -p test/def/scenes
# Create example data files
dd if=/dev/zero of=abc/scenes/file1.mb bs=201M count=1
dd if=/dev/zero of=abc/scenes/file2.mb bs=201M count=1
dd if=/dev/zero of=def/scenes/file3.mb bs=201M count=1
dd if=/dev/zero of=def/scenes/file4.mb bs=201M count=1
# Execute the find command
find ./* -maxdepth 1 -exec tcsh -c "find {} -maxdepth 1 -type f -name '*.mb' -size +200M | head -1" \;
Isso produz a seguinte saída:
./abc/scenes/file1.mb
./def/scenes/file3.mb
Originalmente, a pergunta não especificou tcsh
. Em bash
, você poderia chamar find
de dentro de um loop e canalizar cada find
invocação para head
para extrair o primeiro resultado, por exemplo,
for directory in /net/*/scenes; do
find "${directory}" -maxdepth 1 -type f -name '*.mb' -size +200M | head -1;
done
Aqui está um pequeno exemplo de demonstração:
# Create the directory structure
mkdir -p test/abc/scenes
mkdir -p test/def/scenes
# Create example data files
dd if=/dev/zero of=abc/scenes/file1.mb bs=201M count=1
dd if=/dev/zero of=abc/scenes/file2.mb bs=201M count=1
dd if=/dev/zero of=def/scenes/file3.mb bs=201M count=1
dd if=/dev/zero of=def/scenes/file4.mb bs=201M count=1
# Execute the find command
for directory in ./*/scenes; do
find "${directory}" -maxdepth 1 -type f -name '*.mb' -size +200M | head -1;
done
Isso produz a seguinte saída:
./abc/scenes/file1.mb
./def/scenes/file3.mb