Como posso copiar todos os arquivos .bash_history para o meu diretório pessoal?

5

Estou correndo como root. Eu quero copiar todos os usuários nos arquivos .bash_history do sistema para o meu diretório home. Eu posso fazer isso para combinar todos eles em um, mas então eu não posso dizer quem são os comandos que são.

find /home/ -maxdepth 2 -iname ".bash_history" -type f -exec cat {} >> ~/combined.txt \;

Gostaria de colocar os nomes de usuário entre cada um dos arquivos no arquivo combined.txt ou gostaria de copiar os arquivos nesse tipo de estrutura:

~/user-bash/john.txt
~/user-bash/mary.txt
~/user-bash/bob.txt
~/user-bash/larry.txt
~/user-bash/root.txt

Como posso realizar um deles (ou ambos)?

    
por cwd 09.12.2011 / 05:04

2 respostas

4

Em zsh, usando zmv :

autoload zmv; alias zcp='zmv -C'  # this can go into your .zshrc
zcp '/home/(*)/.bash_history' '~/user-bash/$1.txt'

Em outros shells:

for x in /home/*/.bash_history; do
  u=${x%/*}; u=${u##*/}
  cp "$x" ~/user-bash/"$u.txt"
done
    
por 10.12.2011 / 03:09
0

Você pode combinar todos os arquivos em um, alimentando dois comandos em find : imprima primeiro o nome do arquivo (ou uma versão pré-processada) e, em seguida, o conteúdo:

find /home/ -maxdepth 2 -iname ".bash_history" -type f \
     -exec sh -c "echo {} >> combined.txt && cat {} >> combined.txt" \;
    
por 18.07.2015 / 16:37