どのユーザーの.bash_historyファイルを自分のホームディレクトリにコピーするのですか?

どのユーザーの.bash_historyファイルを自分のホームディレクトリにコピーするのですか?

ルートで実行しています。システムの.bash_historyファイルのすべてのユーザーを自分のホームディレクトリにコピーしたいと思います。これを行うと、すべてのコマンドを1つにマージできますが、誰のコマンドが誰であるかはわかりません。

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

おすすめ記事