私は、現在の作業ディレクトリを利用し、すべてのファイルをスキャンし、.txtファイルであるかどうかを確認するスクリプトを作成しようとしています。次に、すべてのファイル(テキストファイル)を取り出し、名前にアンダースコアが含まれているかどうかを確認し、アンダースコアをハイフンに変更するかどうかを確認します。UNIXディレクトリのファイルの名前を変更する - シェルスクリプト
私は、これは難しい注文であるが、ここではこれまでのところ、私が持っている大まかなコードであることを知っている:私は考えていた何
#!/bin/bash
count=1
while((count <= $#))
do
case $count in
"*.txt") sed 's/_/-' $count
esac
((count++))
done
が、これは、引数として現在の作業ディレクトリ内のファイルを取るだろうということですすべてのファイル($ countまたは "count"で表されるファイル)をチェックします。その後、すべてのファイルに対して、.txtで終わったかどうかをチェックし、そうであれば、sedを使ってすべてのアンダースコアをハイフンに変更します。私は主な問題の一つは、スクリプトが現在の作業ディレクトリからファイルを読み込んでいないということです。私は、スクリプトを実行するコマンドの後にディレクトリを含めようとしましたが、各ファイルの代わりに各行をとったと思います(すべての行に4つのファイルがあるので)。
とにかく、どんな助けでも大歓迎です!また、私のコードが悪いことは残念ですが、私はUNIXにとって非常に新しいです。
1つの問題は、 '$ count'が変数' count'の値であることです。これは整数です。位置パラメータを繰り返し処理する場合は、次のように記述します。 'for" $ @ "のファイル。 do ... 'または省略形' for file; do ... ... –
ここにチェックを入れてください:http://theunixshell.blogspot.com/2013/01/bulk-renaming-of-files-in-unix.html – Vijay