Opções para arquivos .hidden?

0

Quais opções existem para o arquivo .hidden ? Eu queria esconder certos tipos de arquivos em uma pasta, mas simplesmente colocar *.out , que eu presumi que esconderia todos os arquivos terminados em .out , não funcionou. :(

Estou usando o Nautilus.

UPDATE: Eu acho que se esta opção não existe, um shell bash poderia ser criado que, quando executado em um diretório, encontra todos os arquivos com finais correspondentes e grava-os no arquivo .hidden . Eu não tenho nenhuma experiência com a linha de comando, mas vou tentar isso:).

    
por Jóhann 14.02.2012 / 21:46

3 respostas

0

Nova resposta: Parece que você quis dizer algo diferente do que eu pensei que você fez. Você cria um arquivo literal .hidden listando todos os arquivos que você deseja que o gerenciador de arquivos Nautilus esconda por padrão, você pode usar este comando (da resposta do @Jóhann):

for i in *.out; do echo "$i"; done > .hidden

Substituindo .out pela extensão de arquivo que você deseja ocultar.

Resposta antiga:

Se todos os arquivos em questão compartilharem a mesma extensão, e nenhum outro arquivo tiver, então um simples comando shell fará o truque. Por exemplo, para *.out files:

for i in ./*.out; do mv "$i" ./."${i#./}"; done

Este comando moverá todos os arquivos no diretório atual, combinando * .out para .<name>.out

    
por 14.02.2012 / 22:06
2

Apenas por diversão, vou melhorar a resposta de Jóhann um pouco. Em vez de sobrescrever o arquivo inteiro, esse comando verifica se um nome de arquivo já está no arquivo .hidden e o anexa, se não.

for i in *.out; do grep -qxF "$i" tout || echo $i; done

Se você quiser um script mais geral, isso deve funcionar:

#!/bin/bash -e

if [ $# -gt 3 ]; then
        echo "Usage: $0 [directory [extension [listfile]]]"
        echo 'Defaults to "." ".out" ".hidden"'
        exit 1
fi

# Apply defaults.
dir=${1:-.}
ext=${2:-.out}
listf=${3:-.hidden}

# Construct the list file.
list="$dir/$listf"

# Make sure the list file exists or the first 'grep' will print an error.
[ -f "$list" ] || touch "$list"

# Glob all the files
for filename in "$dir"/*"$ext"; do
        # Check whether the list contains the file name
        if ! grep -qxF "$filename" "$list"; then
                # If not, add it.
                echo "$filename" >>"$list"
        fi
done
    
por 15.02.2012 / 03:21
1

Com base na resposta do espantado, eu criei um comando shell para fazer o que eu precisava fazer.

for i in *.out; do echo "$i"; done > .hidden

Isto parece funcionar, é possível aplicar um comando shell a todos os subdiretórios de um diretório escolhido (na verdade, essa é provavelmente outra questão)

    
por 14.02.2012 / 23:55