0

我正在尝试编写一个 shell 命令(Linux),它将查找所有以 NAME.el.srt 结尾的字幕,并以 NAME.srt 格式对它们进行符号链接(从中删除 .el)。

使用:

/usr/bin/find /volume1/public/test -follow -type f \( -iname "*.el.srt" \)

给我以下结果:

/volume1/public/test/Arrow - S01E04.el.srt

/volume1/public/test/Arrow - S01E01.el.srt

/volume1/public/test/Arrow - S01E02.el.srt

/volume1/public/test/Arrow - S01E03.el.srt

我不想重命名它们。我只想在与原件相同的文件夹中创建一个符号链接。

我认为这将是一个简单的镜头......但 4 小时后,我只是在寻找更有经验的人来帮助我:) 最后我找到了它:

IFS=$(echo -en "\n\b");

for j in $(find /volume1/video -follow -type d -name "*");
do
cd $j;
for i in $(find $j -name "*.el.srt" -maxdepth 1 -exec basename {} \;);  
do 
  rname=$(echo "$i" | sed -e 's/\.el\.srt/\.srt/g'); 
  ln -s "$i" "$rname";
done
done

谢谢iamuser为我指出正确的方向:)

4

1 回答 1

0

你可以尝试一个简单的 for 循环来做到这一点。

IFS=$(echo -en "\n\b");
for i in $(find . -name "*.el.srt"); 
do 
  rname=$(echo "$i" | sed -e 's/\.el\.srt/\.srt/g'); 
  ln -s "$i" "$rname";
done

它遍历所有以.el.srt当前目录结尾的文件。对于每个文件,它都会创建一个临时变量,该变量具有不带该部分rname的扩展名。然后它与..srt.elln -s

于 2013-08-30T15:32:04.600 回答