Você precisa definir o separador de campo:
OIFS=$IFS
IFS=$'\n'
files=$(cat Files.txt)
for item in $files ; do
dn=$(dirname $item)
printf $item
printf "\n"
printf $dn
printf "\n\n"
# passing to another process
done
IFS=$OIFS
Saída:
[me@localhost test]$ ./test.sh
TestApp/Resources/Supporting Files/main.m
TestApp/Resources/Supporting Files
TestApp/Resources/Supporting Files/AppDelegate.h
TestApp/Resources/Supporting Files
TestApp/Resources/Supporting Files/AppDelegate.m
TestApp/Resources/Supporting Files
Explicação:
link
A variável $IFS
define como a entrada é dividida em tokens e o padrão é espaço, tabulação e nova linha. Como você deseja dividir apenas em novas linhas, a variável $IFS
precisa ser temporariamente alterada.