ルートで実行しています。システムの.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