Eu tenho alguns arquivos aqui que copiei para esta caixa linux usando o módulo python pysftp:
[jm@spartan tf]$ ls -la
total 0
drwxrwxrwx. 3 jm jm 69 Aug 14 13:50 .
drwxrwxrwt. 9 root root 238 Aug 14 13:49 ..
-rwxrwxrwx. 1 jm jm 0 Aug 14 13:49 .\gitkeep
drwxrwxrwx. 2 jm jm 6 Aug 14 13:50 .\innerfile
-rwxrwxrwx. 1 jm jm 0 Aug 14 13:50 .\innerfile\gitkeep
[jm@spartan tf]$ rm .\gitkeep
rm: cannot remove ‘.gitkeep’: No such file or directory
Eles estão ocultos, então ainda estou tentando descobrir como copiá-los para que não fiquem ocultos, mas enquanto isso quero excluí-los, mas não consigo. O que está acontecendo aqui?
Estou no CentOS 7.
O que você realmente precisa fazer é corrigir seu script para que ele converta os caminhos do Windows em caminhos do Unix. Uma maneira relativamente fácil de fazer isso é tirar os separadores de caminho da equação: em vez de fornecer nomes de caminho completos para copiar, você percorre os diretórios recursivamente, criando diretórios de destino no lado remoto e especificando apenas o nome do arquivo em vez do caminho completo. :)
Mas até chegar a esse ponto, você precisa proteger as barras invertidas do shell. Você pode fazer isso usando aspas simples (barras invertidas são interpretadas para alguns caracteres entre aspas duplas). Observe especificamente que o curinga está fora das aspas, então o shell o trata como um curinga em vez de um literal
*
: :)rm -rv '.\'*
Ou você pode fazer isso escapando a barra invertida (que também funcionaria com aspas duplas, mas as aspas duplas não são necessárias aqui):
rm -rv .\\*
Eu sugiro que, antes de remover coisas usando um curinga, você sempre primeiro execute
ls
com os mesmos argumentos e, em seguida, use a seta para cima para recuperar o último comando, onde você pode alterarls
para um arquivorm
. Dessa forma, você pode ver a lista de arquivos antes que ela seja removida, evitando um erro potencialmente grande. :) Eu também sou um grande fã de usar-v
comrm
em casos como este.Como os nomes dos arquivos contêm um caractere de escape
\
, você precisa escapar desse caractere de escape.irá remover seus arquivos
Se tudo mais falhar, você pode fazer o seguinte para excluir arquivos e pastas que tenham barras invertidas ou caracteres estranhos em seus nomes:
O comando acima iniciará o processo de exclusão de tudo na pasta onde você está. No entanto, ele solicitará antes de excluir cada arquivo ou pasta:
Você precisará digitar "y" e pressionar [Enter] para cada arquivo ou pasta que deseja excluir. Se você encontrar um arquivo ou pasta que NÃO deseja excluir, digite "n" e pressione [Enter].
Se você ainda estiver sendo solicitado a fornecer todos os arquivos e pastas restantes, mas já excluiu o que queria, basta pressionar a seguinte combinação de teclas: