次のようなディレクトリにあるファイルの名前を変更する方法:PMC21375.pdf.txt、に名前を変更する必要があります 21375.txt。つまり、両方PMCとpdf各ファイル名から削除する必要があります。
次のようなディレクトリにあるファイルの名前を変更する方法:PMC21375.pdf.txt、に名前を変更する必要があります 21375.txt。つまり、両方PMCとpdf各ファイル名から削除する必要があります。
回答:
rename 's/(PMC|\.pdf)//g' *pdf.txt
デモ :
$ ls *txt
PMC21375.pdf.txt
$ rename -n 's/(PMC|\.pdf)//g' *txt
PMC21375.pdf.txt -> 21375.txt
shellプロンプトから。これは非常に便利です。私が置き換えたように、いくつかのperlコードを置くことができます。テストが有効になったときに
、-n(ドライランモードスイッチ)を削除できます。
同じ名前のツールが他にもあり、これを実行できる場合とできない場合があるので注意してください。
次のコマンドを実行すると(linux)
$ file $(readlink -f $(type -p rename))
そしてあなたは次のような結果を持っています
.../rename: Perl script, ASCII text executable
次に、これは適切なツールのようです=)
そうでない場合は、それをデフォルト(通常はすでにそうである)にしDebian、次のような派生物にしUbuntuます。
$ sudo update-alternatives --set rename /path/to/rename
(コマンド/path/to/renameのパスに置き換えますperl's rename。
最後に重要なことですが、このツールはもともとPerlの父親であるLarry Wallによって書かれました。
renameコマンドのほかに、bashで直接実行できます(多くの方法の1つ)。
for file in *pdf.txt; do mv $file ${file//[A-Z.]}.txt ; done
Pinyakaがどのように機能するかを示すために編集されました:
hmontoliu@ulises2:/tmp/foo$ touch PCM21375.pdf.txt PCM21376.pdf.txt
hmontoliu@ulises2:/tmp/foo$ ls
PCM21375.pdf.txt PCM21376.pdf.txt
hmontoliu@ulises2:/tmp/foo$ for file in *pdf.txt; do mv $file ${file//[A-Z.]}.txt ; done
hmontoliu@ulises2:/tmp/foo$ ls
21375.txt 21376.txt
.pdfファイル名から削除されません。
ファイルの名前を変更するためのユーティリティがいくつかありますが、最も使いやすいのはrenameです。あなたの場合、あなたはおそらく行うことができます:
rename PMC '' *txt
rename .pdf '' *txt
最初のパラメータは、置換するファイル名の一部です。2番目のパラメーターは、置換文字列です。ここでは''、空の文字列を表すために使用しています。以下のすべてのパラメーターは名前を変更する*txtファイルです。ここでは、置換をテキストファイルに制限するために使用しました。
renameLinuxを実行している場合は、すでに存在しているはずです。* BSDまたはOS Xを実行している場合は、最初にインストールする必要がある場合があります。
rename。からのものとutil-linux、perl構文が異なるものがあります。あなたが参照しているものは、from と混同しないようにutil-linux時々呼び出されるもののように見えますが、他のシステムではutil-linuxからのもので、from が呼び出されます。rename.ulrenameperlrenameperlprename
rename 's/PMC// *.txtとrename s/\.pdf// *.txt
最初にファイルのバックアップを作成してください!次に、基本的に現在のディレクトリで一般的な形式のpythonワンライナーを使用できます。
python -c "import glob,os; [os.rename(fn, fn.replace('PATTERN', 'REPLACE')) for fn in glob.glob('PATH/*')]"
特定のケースでは、これを2回使用できます。
python -c "import glob,os; [os.rename(fn, fn.replace('.pdf', '')) for fn in glob.glob('*')]"
削除.pdfしてもう一度:
python -c "import glob,os; [os.rename(fn, fn.replace('PMC', '')) for fn in glob.glob('*')]"
削除するPMC。
これを試して:
for i in *.pdf.txt; do j=${i//\.pdf/}; j=${j//PMC/}; mv $i $j; done
j=${i//\.pdf/}置換する手段.pdfで$i何もありません。同様に、2番目のj割り当てがPMCを取り除きます。
を使用している場合、これは次の場合のzsh一般的な作業ですzmv。
zmv 'PMC(*).pdf.txt' '$1.txt'
(zmv潜在的な競合を適切に処理します)。
.pdfにより、ファイル名からが削除されることはありません。