私は最近私のラップトップに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
。