如何将所有用户的 .bash_history 文件复制到我的主目录中?

如何将所有用户的 .bash_history 文件复制到我的主目录中?

我以 root 身份运行。我想将系统 .bash_history 文件中的所有用户复制到我的主目录中。我可以这样做将所有这些合并为一个,但这样我就无法分辨谁的命令是谁的。

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

我想将用户名放在文件中的每个文件之间combined.txt,或者我想以这种类型的结构复制文件:

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

我怎样才能实现其中一个(或两个)?

答案1

在 zsh 中,使用zmv:

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

在其他外壳中:

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

答案2

find您可以通过将两个命令输入到:首先输出文件名(或其预处理版本),然后输出内容来将所有文件合并为一个:

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

相关内容