Expandindo a resposta de Anderson M. Gomes , o Bash permite que você se refira a qualquer diretório anterior na pilha de diretórios, digitando ~N
(ou ~+N
) onde N
está a posição na pilha de diretórios. Por exemplo:
# go some places
$ cd /path/to/source/directory
$ pushd /path/to/destination/directory
$ pushd $HOME
$ pushd /tmp
# show the current dir stack
$ dirs -v
0 /tmp
1 ~
2 /path/to/destination/directory
3 /path/to/source/directory
Agora você pode copiar um arquivo entre dois diretórios anteriores, nenhum deles o atual, com:
cp -v ~3/file1.txt ~2
Para resolver o problema do pôster original, você faria:
$ cd /path/to/source/directory
$ pushd /path/to/destination/directory
# show the current dir stack
$ dirs -v
0 /path/to/destination/directory
1 /path/to/source/directory
# copy
cp -v ~1/file[123].txt .
Com um grande conjunto de arquivos, você pode listar seus nomes em um arquivo de manifesto e, em seguida, fazer a cópia do diretório de origem:
$ cd /path/to/destination/directory
$ pushd /path/to/source/directory
# copy
cp -v $(cat files_to_copy.list) ~1
Consulte também: esta seção da página de manual do Bash
Da mesma forma, no Tcsh, você pode usar a =2
notação (em vez de ~2
) para se referir ao segundo diretório na sua pilha de diretórios.
Consulte também: esta seção da página do manual Tcsh
cd
comando, paracd -
voltar ao diretório anterior, seta para cima para recuperar ocd
comando e editar a linha a ser emcp
vez decd
. (ctrl-a (início da linha), alt-d (palavracp -a
final ) , ctrl-e (fim de linha)).