端末を使用して複数の特定のファイルをディレクトリに解凍しますか?

端末を使用して複数の特定のファイルをディレクトリに解凍しますか?

私は最近私のラップトップにLinux Mint 17をインストールしました。私は以前Windows 7を使用し、すべてのデータを外付けハードドライブにバックアップしました。 Windows 7は、すべてのバックアップデータを大規模な.zipフォルダに保存します。私の問題は次のとおりです。 PATHにある私の音楽を含むフォルダだけを抽出したいと思いますC:\...\Username\Music...。したがって、音楽ディレクトリの端末を使用して、外付けハードドライブから自分のホームフォルダにこれらのファイルを抽出する方法を見つけようとしています。私はまだターミナルの使い方を学んでいますが、私が見つけたものは次のとおりです。

for file in *.zip; do unzip -c "$file" -d "/~/Music" | grep "\Username\Music"; done

それは私に出力を与えます:

caution:  not extracting; -d ignored

それを取り除いたときにうまく-dいきましたが(まあ、それはうまくいきました。しばらく実行されました)、最終的に奇妙な出力を得ました。

62;9;c62;9;c62;9;c62;9;c

解凍されたと推定される音楽を検索しましたが、見つかりませんでした。誰もが自分の目標を達成できるのか、どのように達成できるのか教えていただけますか?外付けハードドライブの音楽ファイルを音楽フォルダに抽出したいです。

ベストアンサー1

unzip フラグは次のことを-c意味します。stdout/screenでファイルを抽出するしたがって、実際にはディスクにファイルが書き込まれないため、この-dオプションは意味がありません。また、端末に表示される奇妙な文字についても説明します。おそらくあなたは-C大文字と小文字を区別しない一致を使用する)修飾子?

grepおそらくあなたが望むのは、次のものを使用する代わりに提供することです。処理するプロファイルメンバーのオプションリスト/zipファイルの次:zipファイルのソースがWindowsシステムの場合でも、Unixスタイルのパス区切り文字を使用する必要があります。

最後に、「/~/Music」は文字通りの絶対パスとして解釈できます。~/Music/または、"$HOME/Music/"スペースを含むターゲットディレクトリに変更する方が簡単です。"$HOME/My Music/"

unzip -C "$file" '*/Username/Music/*' -d "$HOME/Music/"

しかし、これは同様のフォルダ構造をもたらし、~/Music/Username/Music/somefile望むものではないかもしれません。 AFAIKは、unzip主要なディレクトリコンポーネントを削除するいくつかの実装ほど柔軟性がありませんが、修飾子を見たいとtar思うかもしれません-j

おすすめ記事