bugfix> linux > 投稿

このようなサブディレクトリがあります:

dir1/
 1a.txt
 1a.out
 1b.txt
dir2/
 2a.txt
 2b.txt
 2b.out

そのサブディレクトリ内に1つのファイルタイプのみが存在するファイルをコピーする場合。すなわち、この場合、私は 1b.txt をコピーしたいと思いますおよび 2a.txt tmpフォルダーに。

私は .txt を保証することができます各ファイルに表示されますが、時々 .out ではない。基本的には、これらのファイルを .txt で見つけたいだけです。しかし、彼らの .out 同等のものは存在しません。

回答 1 件
  • Aserreが言及した二重ループの単純なバージョン:

    for d in dir?
    do for f in $d/*.txt
       do [[ -e ${f%.txt}.out ]] && continue || cp "$f" tmp/
       done
    done
    
    

    これは* .txtのみをコピーするため、一致する* .txtのない* .outファイルも必要な場合は、個別に確認するか、条件を少し複雑にする必要がありますが、操作するものが必要です。

    c.f.説明やその他のおもちゃについては、パラメータの置換と文字列の操作のルール。

    これは、ファイル名に埋め込まれた特殊文字またはスペースを処理する努力をしないことに注意してください。

あなたの答え