rm -f test && touch testExceto isso, eu realmente não sei
kiwy
@ Kiwy Sim, mas estou imaginando um comando interno projetado para executar esta tarefa.
Jonic Biz
Respostas:
12
Isso não é possível para qualquer Unix ou Linux que eu já toquei.
Sob alguns Unixes mais antigos, diretórios são arquivos, especialmente marcados, mas ainda arquivos. Você costumava ler um diretório catno SunOS, por exemplo. Muitos sistemas de arquivos modernos podem ter diretórios como árvores B + ou alguma outra estrutura de dados em disco. Portanto, transformar um arquivo em um diretório ou vice-versa sempre exigiria uma exclusão e uma recriação com o mesmo nome.
Interessante. Se ninguém vier com uma solução, marcarei esta resposta. :-)
Ionică Bizău
5
Não existe tal comando, porque não haveria absolutamente nenhum sentido nele. Sua pergunta é como pedir uma maneira de transformar uma caixa em um retângulo plano. O que você faria com as coisas na caixa (diretório)? Como o retângulo corresponderia à caixa de onde veio?
Arquivos e diretórios servem para funções completamente diferentes. Embora um diretório seja de fato um arquivo nos sistemas * nix, isso se aplica apenas às partes internas do sistema e não ao que você, usuário, vê. Portanto, converter um arquivo em um diretório ou vice-versa sempre envolverá a exclusão do arquivo e a criação do diretório. O melhor que você poderia esperar seria usar o mesmo inode, mas novamente, não há muito sentido nisso.
Dizer que não faz sentido é sua opinião, não um fato técnico.
Sridhar Sarnobat
@ user7000, o que você faria com o conteúdo de um diretório ao "converter" em um arquivo?
terdon
Um sistema de arquivos armazena dados em uma estrutura em árvore. Na ciência da computação, nós de árvore que são nós de folha podem se tornar nós internos quando você adiciona filhos a eles. E não, não vou usar um banco de dados quando um sistema de arquivos for suficiente.
Sridhar Sarnobat
2
Crie uma função para fazer o que quiser. ( bashou outro Bourne / POSIX como shell assumido)
Eu uso deliberadamente o rmdirque falhará se adirnão for um diretório ou não estiver vazio (não -fforçar). touchserá executado apenas se rmdirfor bem-sucedido.
Você pode colocar a definição da função no arquivo de personalização do shell ( .bashrcpara bash).
Aparentemente, um bug no firmware inverteu o bit na entrada de diretório do arquivo, fazendo o sistema operacional pensar que é uma pasta em vez de um arquivo.
Embora eu não tenha o roteador Linksys em questão, algo mudou todos os meus arquivos .jpg em pastas vazias. Se há alguma maneira de mudar o bit (ou o que seja) que diz que uma entrada de diretório NTFS é uma pasta versus um arquivo, eu gostaria de saber sobre isso.
Uma das soluções nesse segmento de dois anos disse que se o disco rígido que contém as pastas que costumavam ser arquivos está conectado a um Mac executando o OS / X, o Mac os verá como arquivos novamente e eles pode ser copiado para uma pasta no Mac. Eu não tenho um Mac para experimentar isso, então se alguém souber uma maneira de virar a página ...
Em primeiro lugar, ter acesso ao terminal e executar ls -al filecom arquivo sendo o arquivo que você deseja converter de volta para uma pasta real. Se houver arquivos e subdiretórios listados, significa que seu "arquivo" era anteriormente uma pasta com conteúdo real e você pode continuar:
Executar:
sudo chmod 700/
OU
sudo chmod 700 file
Reinicie o sistema e recupere o acesso ao terminal e execute:
sudo chmod 744/
OU
sudo chmod 744 file
Lembre-se: "arquivo" deve ser substituído pelo arquivo que você deseja converter novamente em uma pasta REAL.
Essa é apenas uma maneira arbitrária de resolver esse problema, mas cria anomalias de permissão que você pode usar fsck -fpara corrigir (enquanto não está montado, é claro) ou definir manualmente novas permissões, conforme necessário.
Novamente, essa é apenas uma maneira comprovada de evitar a exclusão do arquivo que anteriormente era uma pasta não vazia.
rm -f test && touch test
Exceto isso, eu realmente não seiRespostas:
Isso não é possível para qualquer Unix ou Linux que eu já toquei.
Sob alguns Unixes mais antigos, diretórios são arquivos, especialmente marcados, mas ainda arquivos. Você costumava ler um diretório
cat
no SunOS, por exemplo. Muitos sistemas de arquivos modernos podem ter diretórios como árvores B + ou alguma outra estrutura de dados em disco. Portanto, transformar um arquivo em um diretório ou vice-versa sempre exigiria uma exclusão e uma recriação com o mesmo nome.fonte
Não existe tal comando, porque não haveria absolutamente nenhum sentido nele. Sua pergunta é como pedir uma maneira de transformar uma caixa em um retângulo plano. O que você faria com as coisas na caixa (diretório)? Como o retângulo corresponderia à caixa de onde veio?
Arquivos e diretórios servem para funções completamente diferentes. Embora um diretório seja de fato um arquivo nos sistemas * nix, isso se aplica apenas às partes internas do sistema e não ao que você, usuário, vê. Portanto, converter um arquivo em um diretório ou vice-versa sempre envolverá a exclusão do arquivo e a criação do diretório. O melhor que você poderia esperar seria usar o mesmo inode, mas novamente, não há muito sentido nisso.
fonte
Crie uma função para fazer o que quiser. (
bash
ou outro Bourne / POSIX como shell assumido)Eu uso deliberadamente o
rmdir
que falhará seadir
não for um diretório ou não estiver vazio (não-f
forçar).touch
será executado apenas sermdir
for bem-sucedido.Você pode colocar a definição da função no arquivo de personalização do shell (
.bashrc
parabash
).fonte
--
faz?--
marcas marcam o final dos sinalizadoresrmdir
e, setouch
souberem do passado, é um nome de arquivo, mesmo que comece com-
.Para aqueles que se perguntam por que você deseja fazer isso, siga este tópico:
https://community.linksys.com/t5/Wireless-Routers/Media-files-changing-to-folder-types/td-p/504192/highlight/true
Aparentemente, um bug no firmware inverteu o bit na entrada de diretório do arquivo, fazendo o sistema operacional pensar que é uma pasta em vez de um arquivo.
Embora eu não tenha o roteador Linksys em questão, algo mudou todos os meus arquivos .jpg em pastas vazias. Se há alguma maneira de mudar o bit (ou o que seja) que diz que uma entrada de diretório NTFS é uma pasta versus um arquivo, eu gostaria de saber sobre isso.
Uma das soluções nesse segmento de dois anos disse que se o disco rígido que contém as pastas que costumavam ser arquivos está conectado a um Mac executando o OS / X, o Mac os verá como arquivos novamente e eles pode ser copiado para uma pasta no Mac. Eu não tenho um Mac para experimentar isso, então se alguém souber uma maneira de virar a página ...
fonte
Em primeiro lugar, ter acesso ao terminal e executar
ls -al file
com arquivo sendo o arquivo que você deseja converter de volta para uma pasta real. Se houver arquivos e subdiretórios listados, significa que seu "arquivo" era anteriormente uma pasta com conteúdo real e você pode continuar:Executar:
OU
Reinicie o sistema e recupere o acesso ao terminal e execute:
OU
Lembre-se: "arquivo" deve ser substituído pelo arquivo que você deseja converter novamente em uma pasta REAL.
Essa é apenas uma maneira arbitrária de resolver esse problema, mas cria anomalias de permissão que você pode usar
fsck -f
para corrigir (enquanto não está montado, é claro) ou definir manualmente novas permissões, conforme necessário.Novamente, essa é apenas uma maneira comprovada de evitar a exclusão do arquivo que anteriormente era uma pasta não vazia.
fonte