
.doc
ファイルとファイルを含む.pdf
フォルダがあります。それらの中には、test.doc
と同じ名前がありますtest.pdf
。バージョンが不要になったので、バージョンのみを維持するように.doc
(実際に重複が存在する場合)フォルダを並べ替えたいと思います。.pdf
答え1
mkdir -p PDF
for f in *.pdf ; do
bn=$(basename -- "$f" .pdf)
[ -e "$bn.doc" ] && mv -- "$f" PDF/
done
私はあなたに任せますrm -rf PDF/
。私は潜在的に危険な手順で元に戻せないステップをできるだけ遅くしたいと思います。
自分で削除するには:
for f in *.pdf ; do
[ -e "$(basename -- "$f" .pdf).doc" ] && rm -f -- "$f"
done
このバージョンでは、中間変数 "$bn"を設定する必要はありません。どちらかがうまくいきます...私の考えでは、電子がより読みやすく、ファイルのデフォルト名を別の目的に使用する場合にも優れています。
答え2
努力する
for i in `ls | awk '{print $1}' | cut -d'.' -f1 | uniq -d`
do
rm -r $PWD/$i".pdf"
done
警告:ファイル名にはドット(.)(Finename.extensionなど)のみを含める必要があり、同じコードスニペットを実行している場合は同じディレクトリで実行する必要があります。
答え3
フォルダを「ソート」してファイルを削除することは意味がありません。ファイル名で並べ替えるか、ls -bU | sort
リストを処理して不要なファイルを削除できます。
DOCを含むすべてのPDFファイルを削除する
for d in *.doc; do p="${d/%.doc/.pdf}"; test -f "$p" && rm -f "$p"; done
すべてのPDFファイルを削除
rm -f *.pdf
両方の亜種は、スペースやその他の奇妙な文字を含むファイル名を処理します。を交換してrm
ソリューションをテストできますecho rm
。
答え4
そしてzsh
:
doc_base=(*.doc(:r)) && rm -f -- $^doc_base.pdf
または:
setopt histsubstpattern # could go in ~/.zshrc
rm -f -- *.doc(:s/%doc/pdf)
デフォルト名は同じですが、拡張子(docまたはその他)が異なるPDFファイルがある場合は、すべてのPDFファイルを削除するには:
setopt histsubstpattern extendedglob
rm -f -- *.*~*.pdf(:r:s/%/pdf)