Answers:
将IFS设置为换行符,如下所示:
IFS='
'
for x in `ls -l $1`; do echo $x; done
如果您不想永久设置IFS,请在其周围放一个子外壳:
(IFS='
'
for x in `ls -l $1`; do echo $x; done)
或同时使用| 改为阅读:
ls -l $1 | while read x; do echo $x; done
还有一个选项,它在同一shell级别上运行while / read:
while read x; do echo $x; done << EOF
$(ls -l $1)
EOF
read -r
,否则bash将从数据中删除未转义的反斜杠。
您也可以尝试使用该find
命令。如果只需要当前目录中的文件:
find . -d 1 -prune -ls
在每个命令上运行命令?
find . -d 1 -prune -exec echo {} \;
计算行数,但仅在文件中?
find . -d 1 -prune -type f -exec wc -l {} \;
因此,为什么没有人建议仅使用一些选项来消除他不想处理的部分。
在现代Debian上,您只需使用以下文件即可获取文件:
ls --format=single-column
此外,如果您使用完整目录,则不必注意在哪个目录中运行它:
ls --format=single-column /root/dir/starting/point/to/target/dir/
我正在使用上面的最后一条命令,并且得到以下输出:
bot@dev:~/downloaded/Daily# ls --format=single-column /home/bot/downloaded/Daily/*.gz
/home/bot/downloaded/Daily/Liq_DailyManifest_V3_US_20141119_IENT1.txt.gz
/home/bot/downloaded/Daily/Liq_DailyManifest_V3_US_20141120_IENT1.txt.gz
/home/bot/downloaded/Daily/Liq_DailyManifest_V3_US_20141121_IENT1.txt.gz