Ubuntu 16.04のデフォルトの圧縮ツールを使用して右クリックして、多数の小さなファイル(6102 pdf&txtファイル)を圧縮し、zipファイルをネットワークディスクにアップロードしました。しかし、他の人がWindowsからそれをダウンロードして解凍すると、縮小ファイル(5809)が得られます。再圧縮して再送信しようとしましたが、成功しませんでした。他の人はまだ少ない数の文書を受け取りました。ところで、Ubuntuで解凍してみると6102個のファイルがありました。 UbuntuとWindowsの間に違いがあるのはなぜですか? PS:2つの異なるネットワークディスクを試してみました。どちらも5809です。
答え1
コメントによるとこれは、文字を含むファイル名によるものです*
。他のキャラクターと(および部分文字列)は、Windowsシステムのファイル名には無効です。
Unixシステムでは、Perlユーティリティを使用して、*
次のようにすべての文字を下線に変更できます。_
rename
rename -v 'tr/*/_/' ./*'*'*.pdf
これは、PDFファイルがすべて現在のディレクトリにあると仮定します。この式はすべてを文字列(ファイル名)にtr/*/_/
変更するPerl式です。ファイル名グロービングパターンは、名前に1つ以上のファイル名サフィックスがある現在のディレクトリ内のすべてのファイルと一致します。*
_
./*'*'*.pdf
*
.pdf
単純なループは以下で同じことを行いますbash
。
for name in *'*'*.pdf; do
mv -i "$name" "${name//'*'/_}"
done
..."${name//'*'/_}"
置換される"$name"
すべての*
文字が_
文字に変更されます。