Linux で mv および mkdir コマンドを使用して xargs を使用する

Linux で mv および mkdir コマンドを使用して xargs を使用する

コマンドを使用してディレクトリを作成しようとしていますmkdir。ただし、ファイルのサブセットをそのディレクトリに移動したいと考えています。使用できることは理解しています。xargsしかし、私の試みは失敗しました。たとえば、私は を試しましたmkdir test | xargs -i mv test.text {}。ディレクトリは作成されますが、test.txt作成後にファイルをそのディレクトリに移動しません。

答え1

mkdir何も出力しないので、xargs何も役に立ちません。何をしたいのか正確にはわかりませんので、質問をもっと詳しく説明する必要があります。

「ファイルのサブセットをそのディレクトリに移動したい」 -> このサブセット内のファイルは1つ以上の特性を共有していますか? そうであれば、探す次のようにコマンドします:

find [conditions] -exec mv "{}" dirname \;

ディレクトリ名を2回入力するのを避けたい場合、またはスクリプトからこれを行う場合は、次のようにします。

dirname=test
mkdir $dirname && mv filename $dirname

答え2

mkdir は xargs にパイプするための出力を生成しないと思います。

「mkdir test1 test2 testhello3 | grep hello」を実行しても何も出力されませんが、「ls | grep hello」を実行すると「testhello3」が表示されます。

最初にフォルダーを生成し、次に ls、grep、xargs の順に使用して実行できますか?

ls | grep (unique search to get folder name) | xargs -i mv test.txt {}

ファイルの移動基準などに関する詳細情報があると役立つかもしれません。

答え3

私の推測は、user49740 の回答に近いです:

mkdir test && find -type f -name 'test.*' -exec mv {} test \;

いくつの異なるディレクトリを作成しますか?

関連情報