forループで文字列を編集する

forループで文字列を編集する

以下のコードは空のPDF画像の境界線を切り取ります。次の例の出力ファイルには、拡張子「.pdf」の前に「_cropped」が含まれています。文字列の索引付けは、尾を削除するための良い解決策になることができます。これURL はインデックスの説明を提供します。そのファイル名を変数に割り当てて渡す方法がわかりません<old-name> <new-name>。助けてくれてありがとう。 :)

for f in *; do
    pdf-crop-margins -v -p 0 -a -6 "$(basename $f .pdf).pdf";
done

答え1

Bashでの交換は非常に効率的です。

v="file_cropped.pdf"
# file_cropped.pdf

echo ${v%_cropp*}.pdf
# file.pdf

答え2

入出力$fexample_cropped.pdfexample.pdf

  • オプション1、basenameアプローチ:

    echo $(basename "$f" _cropped.pdf).pdf
    
  • オプション2、sed

    sed 's/_cropped//' <<< "$f"
    
  • オプション3、rename- 文字列の代わりにファイルに適用されます。-nテスト実行のためにファイル名が直接変更されます。

    rename 's/_cropped//' "$f"
    

renameまた、一度に複数のファイルに適用することもできます。たぶんこれは本当に必要なものかもしれません。

関連情報