我需要一些帮助来制作bash脚本。
好的,可以说我在系统中有以下三种文件类型:
fe516148-3e8b-4816-8481-6fd079a46ae9.desc
fe516148-3e8b-4816-8481-6fd079a46ae9.meta
fe516148-3e8b-4816-8481-6fd079a46ae9~fe516148-3e8b-4816-8481-6fd079a46ae9.alias
我需要在.alias
文件中找到一个特定的“字符串”,如果在该.alias
文件中找到它,则需要删除关联的.meta
和{{1} }文件名相同,但文件名稍有不同,在.desc
之后有一个附加名称。
该如何编写脚本?
我有
~
它返回
find . -name "*.alias" -exec grep -l "string" {} \;
这是正确的,但是现在我需要它仅返回./fe516148-3e8b-4816-8481-6fd079a46ae9~fe516148-3e8b-4816-8481-6fd079a46ae9.alias
,然后删除所有文件名为fe516148-3e8b-4816-8481-6fd079a46ae9
的文件,而不考虑文件扩展名包括fe516148-3e8b-4816-8481-6fd079a46ae9
。
据我所知。
答案 0 :(得分:0)
脚本:
filename=fe516148-3e8b-4816-8481-6fd079a46ae9~fe516148-3e8b-4816-8481-6fd079a46ae9.alias
string=abcd
if [ "$(grep $string $filename)" -lt 1 ]
then
f1=$(echo $filename | cut -d'~' -f1)
rm -f $f1.desc
rm -f $f1.meta
fi
这是基于描述的脚本,其中在文件中grep字符串,如果找到,则从.alias文件中剪切文件名并删除那些文件。
希望这会有所帮助。
答案 1 :(得分:0)
特别感谢大家@Barmar。我可以和它一起工作
for file in $(grep -l "string" *.alias)
do
prefix=${file%%~*}
rm $prefix*.*
done