Atalho para um exemplo específico

0

Eu quero mover arquivos fives do diretório Documents para outro diretório sem gravar todos os arquivos explicitamente. Existe um atalho (por exemplo, usando números) que eu poderia usar?

Eu não quero fazer algo assim:

mv ./Documents/Curriculum Vitae (Francais).pdf ./Anotherdirectory
mv ./Documents/Lettre de motivation - Candidature Agent Soutien technique.pdf ./Anotherdirectory
mv ./Documents/Lettre_de_reference_1.pdf ./Anotherdirectory
mv ./Documents/Lettre_de_reference_2.pdf ./Anotherdirectory
mv ./Documents/Lettre_de_reference_3.pdf ./Anotherdirectory

ou

mv ./Documents/Curriculum Vitae (Francais).pdf ./Documents/Lettre de motivation - Candidature Agent Soutien technique.pdf ./Anotherdirectory ./Documents/Lettre_de_reference_1.pdf ./Documents/Lettre_de_reference_2.pdf ./Documents/Lettre_de_reference_3.pdf ./Anotherdirectory

Se eu pudesse associar um número (por exemplo, mv ./Documents/1;2;3;4;5 ./Anotherdirecotry ) a cada arquivo e usar apenas esses números, em vez de todo o caminho, cada vez que fosse mais conveniente.

Para resolver meu problema, tudo o que preciso saber é como fazer referência a esses arquivos?

jeremie@jeremie-MacBookPro ~> ls ./Documents
Curriculum_Vitae/
Curriculum Vitae (Francais).pdf
Lettre de motivation - Candidature Agent Soutien technique.pdf
Lettre_de_reference_1.pdf
Lettre_de_reference_2.pdf
Lettre_de_reference_3.pdf

Eu pensei em fazer referência a um arquivo usando o cifrão. Então eu quero querer acessar o arquivo Curriculum Vitae (Francais).pdf , eu poderia usar o comando ls ./Documents/$2 .

    
por Sandra Ross 15.11.2016 / 04:38

3 respostas

1

Muitos comandos Unix / Linux permitem para especificar vários nomes de arquivos em um único comando. Então, desde que você queira que todos os arquivos cheguem ao mesmo destino, você não precisa usar cinco comandos separados; você pode dizer

mv "./Documents/Curriculum Vitae (Francais).pdf" "./Documents/Lettre de motivation - Candidature Agent Soutien technique.pdf" ./Documents/Lettre_de_reference_1.pdf ./Documents/Lettre_de_reference_2.pdf ./Documents/Lettre_de_reference_3.pdf ./Anotherdirectory

Notas:

  • Porque várias "palavras" em um comando são normalmente tratados como nomes de arquivos separados, você deve fazer algo especial para obter o software para tratar ./Documents/Curriculum Vitae (Francais).pdf como um nome de arquivo único e não três. De fato, vários personagens são especiais e deve ser tratado de uma maneira especial para usá-los como parte de um nome de arquivo - estes incluem & , * , ( , ) , { , } , [ , ] , | , \ , ; , ' , " , < , > , ? , ! , $ , ' e às vezes ~ . A maneira mais simples de lidar com eles é colocá-los entre aspas: aspas duplas, como mostrado acima, ou aspas simples:
    './Documents/Curriculum Vitae (Francais).pdf'
    (as regras ficam mais complicadas para alguns dos personagens.) Outra maneira é colocar uma barra invertida ( \ ) antes de cada um dos caracteres especiais; por exemplo,
    ./Documents/Curriculum\ Vitae\ \(Francais\).pdf
    Most as pessoas acham que citar é mais conveniente.
  • Quando você está lidando com arquivos (e diretórios) no diretório atual, você geralmente não precisa usar ./ . Você (geralmente) precisa disso quando está executando um programa no diretório atual. Também pode ser um truque útil para evitar um nome de arquivo do começo com traço ( - ). É um caractere normal dentro do nome do arquivo (por exemplo, em Lettre de motivation - Candidature Agent Soutien … ) mas no começo será interpretado como uma opção. Outra maneira de lidar com nomes de arquivos que começam com traço é colocar um traço duplo ( -- ) antes do primeiro nome de arquivo; por exemplo,
    mv [options] -- file1 file2 file3 file4 file5 target_directory
    , mas isso nem sempre funciona.

Se você quiser mover todos os arquivos .pdf do diretório atual no subdiretório, você pode fazer

mv -- *.pdf Anotherdirectory

Note que você deve não colocar as * entre aspas aqui. Desta vez, você quer para obter o significado especial, que é "todos os arquivos correspondentes a esse padrão".

Alguns outros truques que você pode usar quando vários dos nomes de arquivos são muito semelhantes incluem:

mv -- … Documents/Lettre_de_reference_?.pdf Anotherdirectory

e

mv -- … Documents/Lettre_de_reference_[123].pdf Anotherdirectory

e

mv -- … Documents/Lettre_de_reference_[1-3].pdf Anotherdirectory

e

mv -- … Documents/Lettre_de_reference_{1,2,3}.pdf Anotherdirectory

e

mv -- … Documents/Lettre_de_reference_{1..3}.pdf Anotherdirectory

Leia o manual para ver como eles diferem.

    
por 26.12.2016 / 23:17
0
mv ./Documents/file{1..5} ./Anotherdirectory
    
por 15.11.2016 / 04:42
0

Como sua exigência é tão específica, sugiro que você crie uma função como esta:

mymv(){ mv ./Documents/"$1" ./Anotherdirectory; }  

$1 representa o primeiro parâmetro da função aqui.

Depois de definir a função, cada vez que você quiser mover um arquivo, use:

mymv FILE
    
por 15.11.2016 / 04:46