1

bashのいくつかのzipファイルの名前を_origに変更しようとしていますが、何かが足りないようです。助言がありますか??

私の目標:

  • ファイルをorigディレクトリに移動します
  • 名前に「_orig」が含まれる元のファイルの名前を変更します

私が書き込もうとしたコード:

mv -v  $PICKUP/*.zip $ORIGINALS
for origfile in $(ls $ORIGINALS/*.zip);do
    echo "Adding _orig to zip file"
    echo
    added=$(basename $origfile '_orig').zip
    mv -v $ORIGINALS/$origfile.zip $ORIGINALS/$added.zip
done

申し訳ありませんが、これはまだちょっと新しいです。

4

2 に答える 2

3

(p)名前の変更を使用する:

cd <ZIP DIR>
mkdir -p orig
rename 's@(.*?)\.zip@orig/$1_orig.zip@' *.zip

renamehttp://search.cpan.org/~pederst/rename/ (多くのディストリビューションのデフォルト)

使用しないでくれてありがとう

for i in $(ls $ORIGINALS/*.zip);do

しかし、代わりにグロブを使用してください:

for i in $ORIGINALS/*.zip;do

http://porkmail.org/era/unix/award.html#lsを参照してください。

于 2012-11-07T22:43:05.347 に答える
1

私はあなたがすでに解決策を持っていることを知っていますが、後世のために、あなた自身のシェルスクリプトのこの単純化されたバージョンはあなたが説明しているように見える場合にも機能するはずです:

mkdir -p "$ORIGINALS"
for file in "$PICKUP"/*.zip; do
    mv -v "$file" "$ORIGINALS/${file%.zip}_orig.zip"
done

これは、bashの「パラメーター拡張」を利用します(bashのマニュアルページで調べることができます)。イニシャルmkdir -pは、ターゲットディレクトリが存在することを保証するだけです。引用符は、ディレクトリ名にスペースや改行などの特殊文字を安全に含めることを目的としています$PICKUP$ORIGINALS

これはprename多くの問題に対する強力な解決策ですが、ツールボックスのハンマーは確かにそれだけではありません。

于 2012-11-09T03:10:39.473 に答える