我刚刚使用以下命令将整个目录复制到另一个目录中
cp ~/local/* ./
实际上想输入
cp ~/local/srl* ./
所以我发现自己有很多不必要的文件。我可以手动抑制它们,但我想知道,有没有办法撤消该术语的任何命令?
答案1
不,没有办法撤消命令(至少不是通用的)。当用户rm
使用错误的正则表达式运行,而没有意识到它覆盖的文件比他们想要删除的文件多时,这通常是一个问题。
此外,从终端撤消任何命令确实是不可能的。想象一下发送电子邮件或播放声音的命令。没有办法撤销这些。
庆幸的是你跑了cp
,不是rm
。
至于未来,如果您不移动/删除/复制太多文件,-i
switch会将其转变为“交互”模式,在每次操作之前要求确认。
答案2
没有通用的方法可以撤消这样的命令。但是,如果您没有覆盖任何文件,那么使用源文件列表来识别必须从目标中删除的文件集并不太困难:
你不小心运行了这个:
cp ~/local/* ./
因此,要找到要删除的文件集,可以使用如下方法:
for SRC in ~/local/*; do DST="${SRC/*\/}"; echo rm "$DST"; done
(DST="${SRC/*\/}"
从 中的文件列表中删除路径,只留下文件名。)当您满意它列出了正确的文件集时,从命令中~/local/*
取出并重新运行它。echo
答案3
安全又缓慢的方法:
该方法包括将文件夹一一删除。您可以使用以下命令删除所选文件夹中的文件:
rm -rf folder_name
更快的方法:
您必须小心,因为您不想意外删除所需的文件:
for SRC in ~/local/*; do DST="${SRC/*\/}"; rm "$DST"; done
答案4
不,通常您无法撤消终端命令。
根据您的具体情况,您可以轻松删除除这些特定文件之外的所有文件:
shopt -s extglob
rm !(srl*)