Skip to main content
remove last / not first and reverce grep by ! to one line accept
Source Link
Costas
  • 15k
  • 24
  • 38

You can do it in bash like

for folder in /target_folder/*/ do folder=${folder#folder%/} if ! grep -vqxqx "${folder##*/}" folders_list.txt then rm -rf "$folder" fi done 

You can do it in bash like

for folder in /target_folder/*/ do folder=${folder#/} if grep -vqx "${folder##*/}" folders_list.txt then rm -rf "$folder" fi done 

You can do it in bash like

for folder in /target_folder/*/ do folder=${folder%/} if ! grep -qx "${folder##*/}" folders_list.txt then rm -rf "$folder" fi done 
simplify the script, with a side benefit that it doesn't break on spaces and wildcards; fix the bug that it would match substrings
Source Link
Gilles 'SO- stop being evil'
  • 865.9k
  • 205
  • 1.8k
  • 2.3k

You can do it in bash like

for folder in $(find /target_folder/* -prune -type d) do if grep -vq "${folder##*/}" folders_list.txt then rm -rf "$folder" fi done 

if you havn't spaces in folders names and it do not start with dot .(hidden)

for folder in /target_folder/*/ do folder=${folder#/} if grep -vqx "${folder##*/}" folders_list.txt then rm -rf "$folder" fi done 

You can do it in bash like

for folder in $(find /target_folder/* -prune -type d) do if grep -vq "${folder##*/}" folders_list.txt then rm -rf "$folder" fi done 

if you havn't spaces in folders names and it do not start with dot .(hidden)

You can do it in bash like

for folder in /target_folder/*/ do folder=${folder#/} if grep -vqx "${folder##*/}" folders_list.txt then rm -rf "$folder" fi done 
Removed syntax highlighting since it breaks on *
Source Link
terdon
  • 252.7k
  • 69
  • 481
  • 719

You can do it in bash like

for folder in $(find /target_folder/* -prune -type d) do if grep -vq "${folder##*/}" folders_list.txt then rm -rf "$folder" fi done 
for folder in $(find /target_folder/* -prune -type d) do if grep -vq "${folder##*/}" folders_list.txt then rm -rf "$folder" fi done 

if you havn't spaces in folders names and it do not start with dot .(hidden)

You can do it in bash like

for folder in $(find /target_folder/* -prune -type d) do if grep -vq "${folder##*/}" folders_list.txt then rm -rf "$folder" fi done 

if you havn't spaces in folders names and it do not start with dot .(hidden)

You can do it in bash like

for folder in $(find /target_folder/* -prune -type d) do if grep -vq "${folder##*/}" folders_list.txt then rm -rf "$folder" fi done 

if you havn't spaces in folders names and it do not start with dot .(hidden)

Source Link
Costas
  • 15k
  • 24
  • 38
Loading