Воспользуйтесь предложением MrAfs и переместите перенаправление в конец цикла.Используя >
вместо >>
, вам не нужно явно обрезать файл.
Также используйте цикл while read
, чтобы он работал, если в именах файлов есть пробелы.exit
в конце является избыточным.
#!/bin/bash
find -size +100 | while read -r f
do
basename "$f"
done > output.txt
В некоторых случаях вы можете избежать создания подоболочки.Вы можете использовать процесс подстановки:
#!/bin/bash
while read -r f
do
basename "$f"
done < <(find -size +100) > output.txt
или в следующем Bash 4.2:
#!/bin/bash
shopt -s lastpipe
find -size +100 | while read -r f
do
basename "$f"
done > output.txt