如何在不输入全名的情况下重命名奇怪的目录?
我有 8 个文件夹,文件夹名很长,并且我只在这个路径 /home/user/Downloads/ 中找到了这些文件夹 - 是否有任何命令可以从所有文件夹中获取每个 {*.txt} 文件并将它们移动到另一个目录?
答案1
如果我根据你的评论正确地重写了你的问题,那么
find /home/user/Downloads -type f -name \*.txt -print0 | \
xargs -0 -I '{}' mv '{}' nice-directory
将可靠地执行您的要求。
答案2
你可以:
mv firstCoupleLetters[tab] newDir[enter]
并依靠自动完成来填写原始目录名称,将其重命名为更短/更有用的名称。
答案3
要重命名目录horrible *[name]* with$weird <characters> \\in it
,例如 ,可以使用通配符。例如,如果您只有一个目录weird
名称中包含 :
mv "*weird*" a-regular-named-directory
其中"
很重要。如果失败,您可以使用
ls --hide-control-chars
这将为您提供一个用 替换的奇数字符的列表?
,然后您将得到一个可以在其上使用的 shell 模式mv
。
答案4
msw 的回答使用xargs
就可以了。
然而,我会
- 用
find -exec
而不是xargs
。 - 使用
mv -t target sources...
形式而不是mv source target
,这样您不需要mv
为每个文件调用。
find ~/Downloads -type f -name "*.txt" -exec mv -t "/path/to/other_directory" {} +
或者,你可以使用globstar
:
shopt -s globstar
mv ~/Downloads/**/*.txt "/path/to/other_directory"
# Unset globstar again if you don't need it anymore:
shopt -u globstar