生成一个.tab文件,其文件名和路径由tab分隔

问题描述

我刚刚开始学习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并丢弃其他空格。