TCAdmin的bash脚本

时间:2018-10-23 18:15:00

标签: bash

我编写的这个脚本有问题,只是学习而没有错误,但是没有用

基本上,我想读取maps文件夹中的所有bsp文件,然后将所有名称写入一个命名为maplist.txt的文件中,但从名称中删除所有bsp扩展名,我将举一个例子:我只有这2张地图在我的地图文件夹中

de_dust2.bsp
de_cache.bsp

运行脚本后,它将生成一个名为maplist.txt的文件,并将该文件替换为以前的csgo /中已经存在的文件,并带有以下行:

de_dust2
de_cache

我的代码是:

find csgo/maps/ -name "*.bsp" -exec basename {} .bsp \; |
sort | uniq > maplist.txt  

这有效:

find csgo/maps/ -name "*.bsp" -printf '%P\n' |
sed 's/\.[^.]*$//' | sort -u > csgo/maplist.txt |
find csgo/maps/ -name "*.bsp" -printf '%P\n' echo "\n\n\n\n+-------------------------------------------------------------------------------+\n|                     Your maplist.txt has been updated!                            \n|        YOUR OLD MAPLIST HAVE BEEN UPDATED PLEASE CHECK IT OUT!!!                  |\n+-------------------------------------------------------------------------------+|" |
sed 's/\.[^.]*$//'

但是echo无效

出现此错误:

find: paths must precede expression: echo
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

1 个答案:

答案 0 :(得分:0)

目前尚不清楚您希望第二个find在第一个find之上完成的目标是什么,还是应该将第一个find csgo/maps/ -name "*.bsp" -printf '%f\n' | sed 's/\.[^.]*$//' | sort -u > csgo/maplist.txt cat <<\____HERE Really loud annoying message here. ____HERE 的输出管道化为目标。 (由于重定向到文件,管道还是空的。)但是在两行之间进行阅读并猜测一下,我想您正在寻找类似

的东西
LOCATION 10/23/2018 10/24/2018 10/25/2018 10/26/2018
0001       350         351        500         600
0002       400         200         400         250
0005        250        200         300         400