Linux中的move命令移動多個具有相同副檔名但不同年份的文件

Linux中的move命令移動多個具有相同副檔名但不同年份的文件

我將 2013 年到 2015 年的大約 500 個 .txt 檔案放在一個資料夾中,我需要將 2013 年和 2014 年的所有檔案移動到其他資料夾中。

答案1

假設“2013年和2014年”表示“修改時間在2013 / 2014年”,您可以透過以下方式取得文件清單:

stat -c '%y %n' * | grep -v '^2015' | cut -d " " -f 4-

這是做什麼的:

stat -c '%y %n'

列印最後修改時間和檔案名稱

*

資料夾中的所有文件

grep -v '^2015'

排除2015年的

切-d“”-f 4-

最後去掉時間戳,只留下檔名(假設你沒有帶有嵌入換行符的奇怪檔名)

xargs然後,您可以使用諸如 之類的工具,甚至是 for 循環(如果字元允許)來處理文件,以將它們移至所需的資料夾。

答案2

如果這些文件的名稱中包含年份,那就很簡單了。如果您熟悉終端,請參閱以下範例。

假設您要將 2013 年的所有檔案移至名為“2013files”的資料夾,其名稱類似於“2013 stuff.txt”或“january 2013.txt”

轉到您的資料夾

cd /path/to/your/folder/

建立要將檔案移至的資料夾

mkdir 2013files

然後移動名稱中包含“2013”​​的所有文件

rename  ./*2013*.txt  ./2013files

重要提示:在使用「重新命名」命令之前,請使用「cp」代替,以確保您沒有輸入任何內容,否則您最終可能只會得到一個檔案。

重要 (2):在執行任何操作之前始終備份您的文件

相關內容