我有一个目录,其中包含一些 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!"