Usando xargs con los comandos mv y mkdir en Linux

Usando xargs con los comandos mv y mkdir en Linux

Estoy intentando crear un directorio usando el comando mkdir. Sin embargo, me gustaría mover un subconjunto de archivos a ese directorio. Entiendo que puedo usarxargos, sin embargo mis intentos han fracasado. Por ejemplo, lo he intentado mkdir test | xargs -i mv test.text {}. Crea el directorio, pero no mueve el archivo test.txta él una vez creado.

Respuesta1

mkdirno genera nada, por lo tanto xargsno hará nada útil. No entiendo exactamente lo que quieres hacer, por lo que deberías explicar mejor tu pregunta.

"me gustaría mover un subconjunto de archivos a ese directorio" -> ¿los archivos de este subconjunto comparten uno o más rasgos? Si es así, utilice elencontrarcomando como este:

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

Si desea evitar escribir el nombre del directorio dos veces, o si lo hace desde un script, puede hacer algo como

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

Respuesta2

No creo que mkdir produzca ningún resultado para canalizar a xargs.

Hacer "mkdir test1 test2 testhello3 | grep hello" no produce ningún resultado mientras que hacer "ls | grep hello" me mostrará "testhello3".

¿Puedes producir las carpetas primero y luego usar ls, luego grep y luego xargs para hacerlo?

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

Quizás sería útil tener más información sobre los criterios para mover archivos y demás.

Respuesta3

Mi conjetura, cercana a la respuesta del usuario49740:

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

¿Cuántos directorios diferentes quieres crear?

información relacionada