内容がすべてゼロで始まるファイルを移動するには?

内容がすべてゼロで始まるファイルを移動するには?

すべてのファイルを移動するコマンドです。名前ゼロで始まるZeroというフォルダを入力してください。

mv [0]* zero

質問: すべてのファイルを移動するコマンドは何ですかコンテンツ0で始まる0というフォルダを入力しますか?

同じことをする短いコマンドがあったらと思います。

ファイルの内容の最初の文字がで与えられることを知っていますhead -c 1 filename

ベストアンサー1

これを実行するように指示されていません。しかし、これは単純なスクリプトです。

  1. コンテンツでファイルを識別して移動する方法を学びます。

    f=example_file.txt
    b=$(head -c1 <"$f")
    [ "$b" = "0" ] && echo mv -- "$f" zero/
    
  2. ディレクトリ内の100,000個のファイル全体を繰り返す方法を学びます。

    find . -maxdepth 1 -type f -print
    

    あるいは、シェルが多数のアイテムにワイルドカードを使用できるようにすることで、よりシンプルで明確なループが機能する可能性があります。

    for f in *
    do
        echo "./$f"
    done
    
  3. mv可能なすべてのファイルに対してコードを実行する方法を学びます。

    find -maxdepth 1 -type f -exec sh -c '
        b=$(head -c1 "$1")
        [ "$b" = "0" ] && echo mv -- "$1" zero/
    ' _ {} \;
    

    または

    for f in *
    do
        [ "$(head -c1 "$f")" = "0" ] && echo mv -- "$f" zero/
    done
    
  4. 最適化されたfindバージョン:

    find -maxdepth 1 -type f -exec sh -c '
        for f in "$@"
        do
            [ "$(head -c1 "$f")" = "0" ] && echo mv -- "$f" zero/
        done
    ' _ {} +
    

どのような場合でも、echoコマンドが何をすべきかを指示するものから実行するものに変更するには、削除します。

おすすめ記事