cwd*_*cwd 5 command-line scripting bash
我以 root 身份运行。我想将系统的 .bash_history 文件中的所有用户复制到我的主目录中。我可以这样做将所有这些合并为一个,但是我无法分辨谁的命令是谁的。
find /home/ -maxdepth 2 -iname ".bash_history" -type f -exec cat {} >> ~/combined.txt \;
Run Code Online (Sandbox Code Playgroud)
我想将用户名放在文件中的每个文件之间combined.txt
,或者我想以这种类型的结构复制文件:
~/user-bash/john.txt
~/user-bash/mary.txt
~/user-bash/bob.txt
~/user-bash/larry.txt
~/user-bash/root.txt
Run Code Online (Sandbox Code Playgroud)
我如何才能完成其中一项(或两项)?
在 zsh 中,使用zmv
:
autoload zmv; alias zcp='zmv -C' # this can go into your .zshrc
zcp '/home/(*)/.bash_history' '~/user-bash/$1.txt'
Run Code Online (Sandbox Code Playgroud)
在其他外壳中:
for x in /home/*/.bash_history; do
u=${x%/*}; u=${u##*/}
cp "$x" ~/user-bash/"$u.txt"
done
Run Code Online (Sandbox Code Playgroud)