
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.txt
a él una vez creado.
Respuesta1
mkdir
no genera nada, por lo tanto xargs
no 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?