我还不是很熟悉grep/find/awk/xargs
相当的所有技巧。
我有一些匹配特定模式的文件,比如*.xxx
. 这些文件位于某个目录中的随机位置。我怎样才能找到所有这些文件,并将它们移动到我在 Unix 上的主目录中的一个文件夹(可能还不存在)?
使用 Bash
因此,假设我将一堆文件随机放置在父目录中~/src
,我想获取与某个后缀匹配的所有文件并将它们移动(或复制)到一个~/dist
目录中。
为此,让我们假设所有文件名都具有以下命名约定:
<filename_prefix>.<filename_suffix>
Run Code Online (Sandbox Code Playgroud)
我发现这是一种快速获取特定文件filename_suffix
并将它们放入 dist 文件夹的方法:
mkdir ~/dst
find source -name "*.xxx" -exec mv -i {} -t ~/dst \;
Run Code Online (Sandbox Code Playgroud)
现在更进一步......在这种情况下filename
,我如何使用 find 的输出,并使用filename_prefix
生成一个同名的目录,~/dist
然后将具有该前缀的所有文件移动(或复制)到适当的目录中?
mkdir ~/dst
find source -name "*.xrt,*.ini,*.moo" -exec mv -i {} -t ~/dst \;
Run Code Online (Sandbox Code Playgroud)
本质上,我如何更改上述命令(或者可能使用另一个命令)来创建这样的结构
(输出)
~/dist/people/people.xrt
~/dist/games/games.xrt
~/dist/games/games.moo
~/dist/games/games.ini
~/dist/monkeys/monkeys.ini
~/dist/monkeys/monkeys.xrt
Run Code Online (Sandbox Code Playgroud)
从这样的目录树?
(输入)
~/src/xrt/people.xrt
~/src/xrt/games.xrt
~/src/conf/games.ini
~/src/pack/monkeys.xrt
~/src/e344/games.moo
~/src/e344/monkeys.moo
~/src/en-us/monkeys.ini
Run Code Online (Sandbox Code Playgroud) Putty 有我想使用的“允许终端使用 xterm 256 色模式”,但我不知道如何使用。我一直在使用color.sh
脚本来输出带有颜色的 echo 语句和命令,我想用 xterm 颜色做类似的事情。
#!/bin/bash
## Specify color to write in using arguments
function --help {
cat << EOF
ERROR: $0 requires a color argument.
USAGE: Changes the color of the text piped into it.
These color arguments are availabe:
ARGUMENT SHORTCUT
white ------ w
red ------ r
green ------ g
yellow ------ y
blue ------ b
violet ------ v
teal ------ t
bold ------ bb
The "bold" argument will modify any color. …
Run Code Online (Sandbox Code Playgroud) 我正在研究使用 ANSI 代码的 shell 脚本,发现由于某种原因,根据您的终端/操作系统支持不同的转义代码。
在某些情况下,我意外地得到了未解析的垃圾转储,我假设这意味着我的终端(在 Mac OS 上)不支持所使用的转义代码,尽管在很多地方都读到了这些含义相同的内容:
27 = 033 = 0x1b = ^[ = \e
Run Code Online (Sandbox Code Playgroud)
在搜索中,我发现了有关检测斜杠转义支持的问题。
所选答案嗅探$TERM
要检测的值
case $TERM in
(|color(|?))(([Ekx]|dt|(ai|n)x)term|rxvt|screen*)*)
PS1=$'\e\]0;$GENERATED_WINDOW_TITLE\a'"$PS1"
esac
Run Code Online (Sandbox Code Playgroud)
但我想知道这有多可靠。
是否有一种标准方法来检查转义码支持(主要针对 Bash),或者该脚本几乎是常规的?
对于其他寻找信息的人来说,这也是一本很好的读物。
我正在尝试提示用户发表评论
function comment {
if [ ! $1 ]
then
read -p "enter checkin comment < " COMMENT;
else
export COMMENT="$1"
fi
if [ ! $COMMENT ]
then
echo 'no comment!'
else
echo "$COMMENT";
fi
}
Run Code Online (Sandbox Code Playgroud)
更新 当我在提示中输入多个单词时会发生这种情况,例如,如果我输入“更新”,我不会收到错误消息...但如果我输入多个单词
enter checkin comment >> sun mars venus
Run Code Online (Sandbox Code Playgroud)
然后我得到错误(总是在第二个字上)
-bash: [: mars: binary operator expected
Run Code Online (Sandbox Code Playgroud)