有什么方法可以控制 ls 输出格式

有什么方法可以控制 ls 输出格式

我有一个目录,其中包含一些 svg 图像。我使用以下ls命令列出它们,以将输出保存在文件中:

ls *200px.svg > animList.js

输出文件如下所示:

file1-200px.svg
file2-200px.svg
file3-200px.svg
...
fileX-200px.svg

我需要像这样写文件名,'fileX-200px.svg',以便轻松地使此文件列表像 JavaScript 数组一样工作。即我需要输出文件为:

'file1-200px.svg',
'file2-200px.svg',
'file3-200px.svg',
...
'fileX-200px.svg',

所以最后我只需要var arr = [在文件开头添加一些内容,然后];在文件末尾添加一些内容即可作为 JavaScript 数组使用。Linux中有什么方法可以控制命令的输出显示ls吗?

答案1

虽然你在一定程度上改变输出的格式ls,例如

LC_CTYPE=C ls --quoting-style=locale *200px.svg

对于单引号(请参阅info coreutils ls 'formatting the file names'详细信息),只需将 glob 的结果传递给 shell 的函数就会更简单printf

printf "'%s',\n" *200px.svg

答案2

除了接受的答案之外,我们还可以第三组 printf生成完整的 JavaScript 数组文件而无需手动编辑的命令:

(printf "var arr =[\n" && printf "'%s',\n" *.svg && printf "];") >animList.js

我将上述命令放在listing.sh同一目录下的可执行文件中,以方便以后调用:

#!/bin/bash
(printf "var arr =[\n" && printf "'%s',\n" *.svg && printf "];") >animList.js
echo "Done!"

相关内容