1 votos

Buscar, seleccionar y mover o copiar varios archivos a la vez via Terminal

Miré para los mensajes relevantes ampliamente antes de escribir, pero te pido disculpas si ya se ha preguntado y resuelto.

Me gustaría necesita para encontrar, seleccionar y mover/copiar algunos archivos de una carpeta a partir de una lista en un archivo de texto (pero también podría pegar directamente si es necesario).

He encontrado algunos artículos que podrían haber ayudado y más precisamente en el siguiente enlace: https://stackoverflow.com/questions/29311880/finding-files-from-list-and-copying-them-into-new-directory

Este parece perfecto, pero tengo un error de permiso (cp: /found_files: Permission denied) y no podía encontrar un trabajo en torno a (intentado sudo y muchas otras combinaciones).

Este parecía estar bien así: Encontrar varios archivos a la vez a través de Terminal. Funciona muy bien para encontrar los archivos, pero no pude encontrar una manera de seleccionarlos con el fin de ser capaz de mover/copiar a un nuevo directorio.

Probé de todo esto en macOS Sierra 10.12.6 sin configuraciones especiales o cambios en el Terminal.

3voto

Phill Puntos 126

Consigue cp: /found_files: Permission denied debido a que la secuencia de comandos en el post vinculado, en su forma actual, está escrito para copiar los archivos de la lista a de la /found_files directorio. El /found_files directorio no existe en tu Mac y cp interpreta found_files como un archivo que se encuentra en /. Desde / no tiene permisos de escritura, consigue el permiso de error.

He modificado el script para que funcione con otros directorios de destino y ampliado para apoyar copiar y mover archivos:

  1. Lanzamiento Del Terminal. Seleccione un directorio donde guardar secuencias de comandos, por ejemplo ~/bin:

    cd ~/bin
    
  2. Crear un archivo de nombre cplist.sh con estos contenidos:

    #!/bin/bash
    
    source_dir="$1"
    destination_dir="$2"
    file_list="$3"
    
    # Sanity checks
    if [[ $# -ne 3 ]]; then
        echo "Usage: $0 <source dir> <target dir> <file list>"
        exit 0
    fi
    if [[ ! -d "$source_dir" ]]; then
        echo "$0: '$source_dir' could not be found"
        exit 1
    fi
    if [[ ! -d "$destination_dir" ]]; then
        echo "$0: '$destination_dir' could not be found"
        exit 1
    fi
    if [[ ! -f "$file_list" ]]; then
        echo "$0: '$file_list' could not be found"
        exit 1
    fi
    
    # Copy or move?
    if [[ $(basename $0) == "mvlist.sh" ]]; then
        command="mv"
        action="Moving"
    else
        command="cp -a"
        action="Copying"
    fi
    
    # Copy files    
    while read filename
    do
        echo "$action file '$filename'"
        if [[ -f "$source_dir/$filename" ]]; then
            find "$source_dir" -name "$filename" -exec $command "{}" "$destination_dir" \;
        else
            echo "File '$filename' is listed in '$file_list' but could not be found"
        fi  
    done < "$file_list"
    
  3. Hacer el archivo ejecutable:

    chmod a+x cplist.sh
    
  4. Link de el archivo mvlist.sh:

    ln -s cplist.sh mvlist.sh
    
  5. Para copiar un conjunto de archivos, uso cplist.sh como sigue:

    ./cplist.sh <source dir> <destination dir> <file list>
    

    donde <file list> es un archivo de texto que contiene los nombres de archivo, por ejemplo:

    file 1.pdf
    file 2.pdf
    ...
    

    Para mover un conjunto de archivos, utilice mvlist.sh como sigue:

    ./mvlist.sh <source dir> <destination dir> <file list> 
    

Por ejemplo:

 ./mvlist.sh 
 Usage: ./mvlist.sh <source dir> <target dir> <file list>

 ./mvlist.sh /tmp/ /nonexistentfolder filelist.txt
 ./mvlist.sh: '/nonexistentfolder' could not be found

 ./mvlist.sh /tmp/source/ /tmp/destination filelist.txt
 Moving file 'file 1.pdf'
 Moving file 'file 2.pdf'
 Moving file 'file 3.pdf'
 Moving file 'file 4.pdf'
 Moving file 'file 5.pdf'
 Moving file 'file a.pdf'
 File 'file a.pdf' is listed in 'filelist.txt' but could not be found
 Moving file 'file 6.pdf'
 Moving file 'file 7.pdf'
 Moving file 'file 8.pdf'
 Moving file 'file 9.pdf'

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X