2017-10-11 35 views
-1

私はUnixシェルスクリプトの新機能です。コマンドの基本知識を得て、最初のスクリプトを書こうとしました。 問題:PDFとDOCファイルが大量にあるアーカイブフォルダがあります。それらの多くはPDF版とDOC版の両方を持っています。 hello.docとhello.pdf。私は同じファイル名でこれらの "重複"のすべてのpdf版を削除したいと思います。実際のファイルの内容が同じかどうかは関係ありません。 先週、いくつかの解決策を探すことを試みましたが、通常はファイルの内容に基づいて解決策を見つけました。同じファイル名でファイル拡張子が異なる重複ファイルを削除するUnixシェルスクリプト

ありがとうございました。現在のディレクトリ内の各ドキュメントのファイルに対して、ファイルが同じ名前を持っているが、PDFファイルでは、pdfファイルを削除しますし

for i in *.doc; do 
    pdffile=$(echo "$i"|sed 's/\.doc/\.pdf/') 
    if [[ -f "$pdffile" ]]; then 
    rm "$pdffile" 
    fi 
done 

+0

ようこそStackOverflow! [質問のしくみ](https://stackoverflow.com/help/asking)のガイド、具体的には[最小限で完全で検証可能なサンプルを作成する方法](https://stackoverflow.com)のガイドをご覧ください。/help/mcve) – AesSedai101

答えて

1

あなたのような何かを試みることができます。

+0

すぐに応答していただきありがとうございます。私は私の "noobidity"を謝罪します。私は "i"が変数だと理解していますが、それを最初に宣言する必要がありますか、そのままコードを実装できますか? – PeterS

+0

@PeterSコードをそのまま実行することができます。 'i'は' for'ステートメントで宣言されています – Will

+0

こんにちは私はいつも同じエラーを出しました:::: rm: 'pdffile'を削除できません:そのようなファイルやディレクトリはありません – PeterS

関連する問題