この質問は、ファイルの名前を再帰的に変更することに関する回答に関連しています。
ダッシュを置き換えるように変更されたコードは、次のような場合には機能しません。
./Beginners Tools/Hello's -Trojans-/bif43243
./Linux/Nux Col - 1 Works (TEX & Pdf) - T'eouhsoe & More (33323 - 34432)
./Git/peepcode-git-mov/c6_branch_merge.mov
./haskell/OS 2007 - T aoue
./B Sites for Get-Big
次のような場合に機能しました。
./oeu'oeu - X ee ls - Feb 2008.pdf
したがって、データを解析する必要があります。ダッシュを正しく置き換えるにはどうすればよいですか?
[詳細]
コードはリンクからのものですが、「-」を置き換えるように変更されています。
import os
for dirpath, dirs, files in os.walk(your_path):
for filename in files:
if '&' in filename:
os.rename(
os.path.join(dirpath, filename),
os.path.join(dirpath, filename.replace('-', '_'))
)
Python はすべてのダッシュを置き換えませんでした。名前には、以前にスクリプトを停止した特殊な記号が含まれているためだと思います。そのため、アーカイブ中にエラーが発生しました:
tar cvzf sed_backup.tar.gz `find documents | sed s/\.*/\'\&\'/`
tar: rojans-: Cannot stat: No such file or directory
tar: Error is not recoverable: exiting now
名前に「 ' 」と「 - 」の記号がまだ残っているため、tar-command は「 ' 」を find-command の末尾として解釈し、「 - 」をパス内のオプション記号として解釈します ./Beginners Tools/ Hello's -Trojans-/bif43243"