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

generate a .tab file with filenames and paths separated by 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.

If your printf also supports -v then you can do...

printf -v FILES "%s\t" $(ls -A $(pwd))
echo ${FILES}

But the tabs sadly get lost. Writing it to a file like in the first example corrects it...

printf "%s\t" ${FILES} >files.tab

想知道为什么只有一个 %s\t?嗯,它就像一个数组上的 foreach。对于空格分隔列表 printf 中的每个元素,执行 %s\t 并丢弃其他空格。