问题描述
我刚刚开始学习linux CLI。我正在使用snippy工具比较需要.tab格式文件的多个文件。此制表符格式的文件应由以制表符(\ t)分隔的路径和文件名组成。
find $(pwd)/*.fna > /home/fan/onas/filenames.tab
和
ls > filenames.tab
但是每当我运行此命令来检查文件中的选项卡时。文件内没有选项卡(\ t)。
cat -vet filenames.tab
我也使用此命令将\ n替换为\ t。但这在这里不起作用。
sed 's/\n/\t/g' filenames.tab > file2.tab
简而言之,我正在尝试生成一个文件名和路径,这些文件名和路径由制表符或.tab格式分隔。有人可以帮我吗? 谢谢
解决方法
命令printf
...
printf "%s\t" $(ls -A $(pwd)) >files.tab
...格式化ls -A
(也是隐藏文件)的输出,并用制表符分隔为{>
)个files.tab。
如果您的
printf
也支持-v
,那么您可以...
printf -v FILES "%s\t" $(ls -A $(pwd))
echo ${FILES}
但是标签不幸地迷路了。将其写入第一个示例中所示的文件即可对其进行纠正...
printf "%s\t" ${FILES} >files.tab
想知道为什么只有一个%s\t
吗?嗯,就像数组上的foreach
。对于空格分隔列表printf
中的每个元素,请执行%s\t
并丢弃其他空格。