我想将一组文件/目录移动(不仅仅是复制)到不同的目录,其中一些与目标目录中的文件/目录有名称冲突。我的主要目标是移动文件,所以我可以容忍非空目录被覆盖。
mv ... destination
然而,我目前正在使用,偶尔我会得到
mv:无法将“目标”移动到 /destination/target':目录不为空
我尝试mv -f ... destination
没有成功,因为我希望文件从它们的原始位置消失,rsync
这似乎不合适。
作为奖励,是否有一个很好的解决方案来保留打算通过重命名以某种方式覆盖的文件?
有没有办法echo
在管道的末尾简单地附加到当前输出而不是将其全部删除?例如,我如何保留我cat
和的输出grep
并将“END OF OUTPUT”添加到同一管道的输出末尾:
$ cat file.txt | grep 'foo' | echo "END OF OUTPUT"
something foo
foo
foo something
END OF OUTPUT
Run Code Online (Sandbox Code Playgroud)
类似于如何cat -
工作:
echo "START OF OUTPUT" | cat - file.txt
Run Code Online (Sandbox Code Playgroud) 如何防止find
返回我用作根目录以在结果中开始搜索的目录?例如:
$ find targetDir -name 'target*'
targetDir/target1
targetDir/target2
targetDir/subDir/target3
Run Code Online (Sandbox Code Playgroud)
代替:
$ find targetDir -name 'target*'
targetDir
targetDir/target1
targetDir/target2
targetDir/subDir/target3
Run Code Online (Sandbox Code Playgroud) 我想通过目录递归搜索并找到所有不是隐藏文件本身并且不在隐藏目录中的文件。我尝试使用find . -type f -not -name '.*'
which 排除任何基本名称隐藏文件,但它仍然递归到隐藏目录中。
dir/
file.py
.hidden_file
.hidden_dir/
file.c
Run Code Online (Sandbox Code Playgroud)
我希望输出是:
./dir/file.py
Run Code Online (Sandbox Code Playgroud)
但是,我得到:
./dir/file.py
./dir/.hidden_dir/file.c
Run Code Online (Sandbox Code Playgroud)
编辑:我只想列出文件,即, -type f
我可能想为命令添加别名,以便该命令照常运行,但在执行之前还对参数执行其他操作。一个例子可能是:
alias ls="echo displaying contents of $@; ls $@"
Run Code Online (Sandbox Code Playgroud)
只是一个假设,但本质上我想运行一个命令(在本例中为 ls )并在标准ls
发生之前设置一个静态命令来运行它。
一个函数,如:
function ls() {
echo "printing $1"
ls $1
}
Run Code Online (Sandbox Code Playgroud)
似乎不合适,因为我必须处理相关命令上使用的开关/选项,即重新创建整个命令。
附注。我想使用原始命令,它通常如何使用,只需使用别名或 rc 之类的东西(即我可以永久附加的东西)以上述方式向它添加功能